0

我正在使用 EF Code First 映射到现有的 DB2 数据库。这是一对多的关系,不幸的是我无法轻松创建视图或更改架构。

父表的架构具有以下键:

 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});

...我收到一条错误消息,提示键与主键不匹配。关于如何设置的想法?谢谢。

编辑

好的,EF 本身并不支持这一点。是否有解决方法来延迟加载数据?

这是只读的,如果有区别的话。

4

1 回答 1

1

不幸的是,这是不可能的。EF 中的关系具有与数据库中相同的规则。如果您的父表在主键中具有三列,则从属表在外键中必须具有相同的三列。

我不确定您是否可以在没有标记的情况下在 DB2 中定义这种关系ServiceDate并将其定义FormNumber为唯一键(在这种情况下,也没有理由Type在 PK 中也有),但您绝对不能在蓝图的 SQL Server 中定义它对于英孚。无论如何,EF 目前不支持唯一键来形成关系。

于 2012-04-21T18:35:11.170 回答