【发布时间】:2012-02-07 15:24:01
【问题描述】:
我asked this ages ago,但这个问题的措辞很糟糕。
我正在尝试指定 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个列”。
这可能吗?
希望这是有道理的!
【问题讨论】:
标签: c# entity-framework entity-framework-4.1 ef-code-first