首页 文章

实体类型'MigrationOperation'需要定义主键

提问于
浏览
1

我正在尝试使用Identity构建我的第一个.NET应用程序 . 它将是一个基本的Workout应用程序,但我一直无法弄清楚Identity中的Keys和ForeignKeys . 这是我的ExerciseController:

using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations;
 using System.ComponentModel.DataAnnotations.Schema;
 using WorkoutGenerator.Data.Migrations;

    namespace RandomWorkout.Models
    {
    public class Exercise
    {
        public string Name { get; set; }
        public string Description { get; set; }
        public MuscleGroup MuscleGroup { get; set; }
        public int MuscleGroupID { get; set; }
        [Key]
        public int ID { get; set; }

        [ForeignKey("ID")]
        public virtual ApplicationUser User { get; set; }

        public IList<ExerciseWorkout> ExerciseWorkouts { get; set; } = new List<ExerciseWorkout>();
    }

}`

然而,当我运行迁移时,我收到错误

它们的实体类型“MigrationOperation”需要定义主键 .

我与其他实体遇到过这个问题,在这种情况下我只需要在我的DbContext类中创建一个新的builder.Entity . 但是,使用MigrationOperation,似乎并非如此 . 我是否完全错误地了解如何使用自动生成的User表加入我的表?谢谢

2 回答

  • 0

    试试这个:

    公共课练习{
    public string Name {get;组; }
    public string说明{get;组; }
    公共MuscleGroup MuscleGroup {get;组; }
    public int MuscleGroupID {get;组; }

    [键]
    public int Id {get;组; }

    public int UserId {get;组;}
    [ForeignKey的( “用户ID”)]
    public virtual ApplicationUser User {get;组; }

    公共IList <ExerciseWorkout> ExerciseWorkouts {get;组; } = new List <ExerciseWorkout>();
    }

    为foreignkey添加一个int,并为主键定义一个id属性

  • 1

    为了解决这个问题,最好通过你的Id定义id private

    private Guid _id;
    [Key]
    public Guid ID
    {
    get { return _id; }
    }
    

相关问题