0
我使用EF代码首先映射到一个现有的DB2数据库。这是一对多的关系,不幸的是我不能轻松创建视图或更改架构。EF代码首先国外关键问题
父表的模式具有以下键:
Type (char(1))
ServiceDate (datetime)
FormNumber (varchar(8))
子表(详细信息)具有下列键
ServiceDate (datetime) (also a foreign key to ServiceDate on the parent table)
FormNumber (varchar(8)) (also a foreign key to ServiceDate on the parent table)
SpecificServiceDate (datetime)
LineNumber (varchar(8))
我想用流利的映射创建关系。如果我做的:
.HasMany(e => e.Details).HasForeignKey(e => new {e.ServiceDate, e.FormNumber});
...我得到一个错误说的密钥不匹配的主键。想法如何设置这个?谢谢。
编辑
OK,EF本身并不支持这一点。有没有一种解决方法来延迟加载数据?
这是只读的,如果有差别。
我甚至不知道如何将工作。如果您有FormNumber = 1,ServiceDate = 1/1/2013,Type = A和FormNumber = 1,ServiceDate = 1/1/2013,Type = B,会发生什么?细节无法唯一地选择哪个记录是父项。我不能相信DB/2在它不是唯一标识的时候会允许这种外键关系。 – 2012-04-21 19:08:31
这是关闭一个旧的AS400系统,主表实际上是一个UNION视图,并且外键比其他任何更常规。不好玩。 :-( – bryanjonker 2012-04-21 19:10:29
EF并不支持视图,尤其是EF会将任何不可空的字段视为复合主键的一部分,您可能无法在此处创建关系。 – 2012-04-21 19:19:15