实体类型“MigrationOperation”需要定义主键

时间:2018-03-06 04:27:07

标签: c# asp.net .net-core entity-framework-core

我正在尝试使用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 :(得分:1)

试试这个:

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; } 

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

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

为foreignkey添加一个int,并为主键

定义一个id属性

答案 1 :(得分:0)

解决了这个问题最好通过你的Id

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