在 Linq to SQL 中,我可以指定一个不必依赖于数据库中现有的外键和 pks 的关系,这对于创建如下所示的复合关系很有用:
public class Equipment_CableNormalised
{
...
[Association(ThisKey = "EquipmentId,PortNumber", OtherKey = "EquipmentId,PortNumber", IsForeignKey = false)]
public List<EquipmentPort> EquipmentPorts
{
get; set;
}
}
然后生成类似于以下的 sql" .. join EquipmentPorts EP on EP.EquipmentId = blah and EP.PortNumber = Blah"
.
我可以在 EF4.1 中做同样的事情(使用注释或 Fluent api)吗?我知道您可以指定复合键并使用 [Keys] 和 [ForeignKeys] 属性,但这种关系不会映射到键......
您的代码中的示例关系如何工作?我希望 EquipementId 一侧必须是 PK 或唯一密钥(L2S 和 EF 中均不支持),因为否则关系就无法存在(一对一和一对多都需要唯一主体)。一旦一侧出现 PK,端口号就多余了。
代码优先仅允许映射到键。如果您有现有数据库,您可以在模型中欺骗它,并以与映射现有数据库相同的方式映射新关系,但您仍然必须遵循简单的规则 - 主体中的属性是主键,依赖实体中的属性被映射为外键。
如果您希望 EF 为您生成 DB,那么您将始终拥有数据库中的所有关系。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)