我在SQL Server数据库中有以下表格

它具有1-1关联表(FooBar),该表在对应的FooId,BarId上具有唯一索引,并且主键是(FooId,BarId)。

需要明确的是,FooBar不允许任何FooId(由于唯一性约束)多次出现在表中,也不允许任何BarId(由于唯一性约束)多次出现在表中。这就是使其成为1-1关联表的原因。

我想拥有此关联表,而不是Foo与Bar之间的1-1关系,因为在我的实际情况下,Bar将与其他不相关的表具有其他关系,并且我想要类似的关联表(而不是向Bar添加新的FK列每个新表)

然后,我将这些表带入我的EDMX设计器中。关系以多对多而不是一对一的方式引入。

当然不是我想要的。我可以手动将模型更改为1-1关系。

但是然后我得到了一个错误(在设计器中)。

这是错误还是无法在EF中以这种方式创建1-1关联?

最佳答案

它是整个EF设计的“错误”: Entity Framework 4-6.1x 仅在主键上具有多重性。

因此,即使我们知道(和RA模型)由于候选键约束而为1-1关系,EF也不会也不会喜欢它。倒霉。

“解决方案”包括:

  • 将模型更改为EF可以理解的内容(EF可以理解Code First,而不是RA)。当然,这可能表明所选RA模型存在“问题”,但这与问题正交。.
  • 遵循错误生成的多重性规则和“谨慎使用”的原则;可以包装脏的工作,但必须在自动生成的模型之外手动添加。
  • ..嗯,还有吗?

  • 未解决问题的无耻插件处理了相同的核心不足功能:
  • How to get EF6 to honor Unique Constraint (on FK) in Association/Relationship multiplicity?
  • How to add an EF6 Association to a Candidate Key / Unique Key which is not the Primary Key?
  • 关于c# - 通过关联表的 Entity Framework 1to1关系在EDMX中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28566550/

    10-09 07:27