我首先使用实体框架代码并添加了一个类,该类具有类的列表,其中类也必须具有另一个类列表,但是当我尝试通过迁移对数据库进行更新时,我得到: / p>
属性' SubscaleStatistics'上的ForeignKeyAttribute在类型SubscaleScore'无效。外键名称' SubscaleStatisticsId'未在依赖类型' SubscaleScore'中找到。 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; }
}
我在这里做错了什么?或者我是否需要提供更多信息才能解决问题?
答案 0 :(得分:6)
答案 1 :(得分:3)
外键必须是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的类执行相同的操作