首页 文章

EF Code First外键问题

提问于
浏览
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});

...我得到一个错误,说密钥与主键不匹配 . 关于如何设置的想法?谢谢 .

Edit

好的,EF本身不支持这一点 . 是否存在延迟加载数据的变通方法?

这是只读的,如果这有所不同 .

1 回答

  • 1

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

    我不确定你是否可以在DB2中定义这样的关系而不将 ServiceDateFormNumber 标记为唯一键(在这种情况下,没有理由在PK中也有 Type )但你绝对可以't define it in SQL server which is blue print for EF. Anyway EF currently doesn' t支持形成关系的唯一键 .

相关问题