C# EF代码第一外键问题
我首先使用EF代码映射到现有的DB2数据库。这是一种一对多关系,不幸的是,我无法轻松创建视图或更改模式 父表的架构具有以下键:C# EF代码第一外键问题,c#,entity-framework,ef-code-first,C#,Entity Framework,Ef Code First,我首先使用EF代码映射到现有的DB2数据库。这是一种一对多关系,不幸的是,我无法轻松创建视图或更改模式 父表的架构具有以下键: Type (char(1)) ServiceDate (datetime) FormNumber (varchar(8)) 子表(详细信息)具有以下键 ServiceDate (datetime) (also a foreign key to ServiceDate on the parent table) FormNumber (varchar(8)) (
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))
我想使用fluent映射来创建关系。如果我这样做:
.HasMany(e => e.Details).HasForeignKey(e => new {e.ServiceDate, e.FormNumber});
…我收到一个错误,说密钥与主键不匹配。关于如何建立这个的想法?谢谢
编辑
好的,EF本机不支持这个。是否存在延迟加载数据的解决方法
这是只读的,如果有区别的话 不幸的是,这是不可能的。EF中的关系具有与数据库中相同的规则。如果父表的主键中有三列,则从属表的外键中必须有相同的三列
我不确定您是否可以在DB2中定义这种关系,而不将
ServiceDate
和FormNumber
标记为唯一键(在这种情况下,PK中也没有理由有Type
),但您肯定不能在SQL server中定义它,这是EF的蓝图。无论如何,EF目前不支持形成关系的唯一键。我甚至不确定这将如何工作。如果您有FormNumber=1、ServiceDate=1/1/2013、Type=a和FormNumber=1、ServiceDate=1/1/2013、Type=B,会发生什么情况?详细信息无法唯一地选择哪个记录是它的父记录。我不相信DB/2会在没有唯一标识的情况下允许这种外键关系。这是一个旧的AS400系统,主表实际上是一个联合视图,外键比其他任何东西都更常规。不好玩-(EF也不太支持视图。特别是,EF会将任何不可为空的字段视为复合主键的一部分。您可能无法在此处创建关系。