我正在尝试使用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表加入我的表?感谢
答案 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 privateprivate Guid _id;
[Key]
public Guid ID
{
get { return _id; }
}