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

问题描述 投票:1回答:2

我正在尝试使用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表加入我的表?谢谢

c# asp.net .net-core entity-framework-core
2个回答
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属性


0
投票

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

private Guid _id;
[Key]
public Guid ID
{
get { return _id; }
}
© www.soinside.com 2019 - 2024. All rights reserved.