我正在使用带有代码优先方法的Entity Framework 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',因为它们不在同一类型层次结构中或没有有效的一对一外键关系且它们之间具有匹配的主键。
我究竟做错了什么?
似乎问题在于该关系被解释为一对一..1,而不是一对一。
int PictureInfoId
Review端的外键是不需要/忽略的,因此它的不可空性不会使Review端成为所需的关系。删除此不需要的键并将[Required]属性添加到PictureInfo导航属性即可解决该问题。
这是更正的Review类。
[Table("Review")]
public class Review
{
public int Id { get; set; }
[Required]
public PictureInfo PictureInfo { get; set; }
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句