与实体框架中的级联删除的1到0..1关系

时间:2012-07-06 13:31:05

标签: .net database entity-framework edmx entity-model

假设在Entity Framework 4.3中创建了以下模型: http://www.dumpyourphoto.com/files4/122585/bI2uq9a.png

我们有:

  • 位置实体
  • 有位置的公司
  • 关系:位置包含0..1家公司。此选择是必要的,因为我们设计中的更多实体将使用位置实体。
  • 级联删除:删除公司时,也需要删除相应的位置。

这是出错的地方:从此模型生成数据库时,实体框架会弹出以下错误消息:

http://www.dumpyourphoto.com/files4/122586/bgOPaZwqL.png

翻译错误消息说: "End Company on relationship Model1.Store.CompanyLocation cannot have operation specified since its multiplicity is '*'. Operations cannot be specified on ends with multiplicity '*'."

经过调查,我们注意到这确实似乎不可能,因为Entity框架生成以下数据库(没有级联删除): http://www.dumpyourphoto.com/files4/122587/rx0g1G.png

实际上无法进行级联删除,因为实体框架有点作弊,它只生成1个外键,同时在其实体中保留两个导航属性。

这是完全合理且正确的数据库方式,但它会给我们带来麻烦。我们需要这种级联删除,但也需要0..1关系,因为数据库中的其他对象以与公司相同的方式使用位置实体。有没有人有这方面的解决方案,或有关如何解决这个问题的建议?

0 个答案:

没有答案