2

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

我们有:

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

这就是它出错的地方:从这个模型生成数据库时,Entity Framework 弹出以下错误消息:

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 '*'."

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

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

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

4

0 回答 0