我使用实体框架 6 和代码优先方法,并且我希望将两个实体放入同一个表中。我究竟做错了什么?
[Table("Review")]
public class Review
{
public int Id { get; set; }
public PictureInfo PictureInfo { get; set; }
public int PictureInfoId { get; set; }
}
[Table("Review")]
public class PictureInfo
{
[Key, ForeignKey("Review")]
public int ReviewId { get; set; }
public Review Review { get; set; }
}
我得到的错误:
实体类型“PictureInfo”和“Review”无法共享表“Review”,因为它们不在同一类型层次结构中,或者它们之间没有与匹配主键的有效一对一外键关系。
我究竟做错了什么?
问题似乎在于该关系被解释为一对 0..1 而不是一对一。
外键int PictureInfoId
在 Review 端不需要/被忽略,因此它的不可空性不会使关系的 Review 端成为必需的。删除这个不需要的键并将 [Required] 属性添加到 PictureInfo 导航属性即可解决该问题。
这是更正后的 Review 类。
[Table("Review")]
public class Review
{
public int Id { get; set; }
[Required]
public PictureInfo PictureInfo { get; set; }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)