英孚 4.3.1。我已经定义了User
实体Box
。每个框可能分配给用户,也可能不分配给用户。
我想要实现的是在类中有一个OwnBox
属性,在User
类中有一个Owner
属性Box
。
在数据库中,我OwnerId
在Boxes
(Boxes.OwnerId
与Users.UserId
)中定义了外键。
为了定义与 fluent api 的关系,我定义了以下类:
public partial class User
{
public int UserId {get; set;}
public virtual Box OwnBox { get; set; }
}
public partial class Box
{
public int? OwnerId { get; set; }
public virtual User User { get; set; }
}
然后在我的 Mapping 类中Box
,我定义了如下关系:
this.HasOptional(t => t.User).WithOptionalDependent(d => d.OwnBox).
Map(m => m.MapKey("OwnerId")).WillCascadeOnDelete(true);
但是通过启动项目,我得到了错误:
指定的架构无效。错误:(56,6):错误 0019:类型中的每个属性名称必须是唯一的。已定义属性名称“OwnerId”。
所以我不得不告诉 EF 先忘记这个OwnerId
专栏:
this.Ignore(t => t.OwnerId);
现在项目运行良好。但是我仍然怀疑这是否是一种好方法,并且在具有外键关联的 CRUD 操作上一切正常。