外键属性无效?(实体框架代码优先)
本文关键字:代码 框架 实体 属性 无效 | 更新日期: 2023-09-27 18:11:36
我首先使用实体框架代码,并添加了一个类,其中类也必须有另一个类列表,但当我试图通过迁移对数据库进行更新时,我得到这个:
类型为SubscaleScore的属性'SubscaleStatistics'上的ForeignKeyAttribute无效。在从属类型"SubscaleScore"上找不到外键名称"SubscaleStatisticsId"。Name值应该是一个逗号分隔的外键属性名称列表。
我的类是这样的:
public class ExamStatistics : StatisticsData
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
public int TestId { get; set; }
public IList<SubscaleStatistics> Subscales { get; set; }
}
public class SubscaleStatistics
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int SubscaleStatisticsId { get; set; }
public int TestId { get; set; }
public int SubscaleNumber { get; set; }
public int ExamStatisticsId { get; set; }
[ForeignKey("ExamStatisticsId")]
public virtual ExamStatistics ExamStatistics { get; set; }
public IList<SubscaleScore> SubscaleScores { get; set; }
}
public class SubscaleScore
{
public int TestId { get; set; }
public int Subscale { get; set; }
public double Score { get; set; }
public int SubscaleId { get; set; }
[ForeignKey("SubscaleStatisticsId")]
public virtual SubscaleStatistics SubscaleStatistics { get; set; }
}
我在这里做错了什么?还是我需要提供更多的信息才能知道哪里出了问题?
您需要为SubscaleScore添加一个外键属性。
public int SubscaleStatisticsId { get; set; }
查看教程:外键
外键必须是id而不是对象
试试这样:
public class SubscaleScore
{
public int TestId { get; set; }
public int Subscale { get; set; }
public double Score { get; set; }
public int SubscaleId { get; set; }
[ForeignKey("SubscaleStatisticsId")]
public int SubscaleStatisticsId { get; set; }
public virtual SubscaleStatistics SubscaleStatistics { get; set; }
}
对所有带有foreignkey