0
I asked this ages ago但是这个问题措辞严重。如何在EF代码中指定复合关系 - 首先不映射到PK
我试图指定2个类之间的关系,这不是一个简单的FK映射 - 这是一个预先存在的数据库,而不是我将从EF生成的东西。
因此,两个对象的简化视图:
public class WidgetDetails
{
[Key]
public int WidgetId { get; set; }
public int WidgetNumber {get; set;}
// Some other props here..
[ForeignKey("WidgetId,WidgetNumber")]
public virtual WidgetProps WidgetProps { get; set; }
}
public class WidgetProps
{
[Key]
public int WidgetPropId { get; set; }
[Key, Column(Order = 0)]
public int WidgetId { get; set; }
[Key, Column(Order = 1)]
public int WidgetNumber { get; set; }
// Some props here...
}
这里的关键是,WidgetProps已经有它自己的PK。但 - 因为我想能够使用复合WidgetId和WidgetNumber指定WidgetProps与WidgetDetails相关,我尝试在我的ForeignKey属性中指定它。然而,只有当我从WidgetProps.WidgetPropId中移除[KEY]属性时才会起作用 - 因为在EF中,关系是使用键映射的。
我想对你说EF是“嘿,这是PK列,但这种关系是不使用它,它是基于这2列”。
这可能吗?
希望有道理!
看起来像我能做到这一点的唯一方法就是添加代表关系的属性并从db中获取相关数据。感谢您的澄清! – 2012-02-08 08:21:50