我处于这种情况,我有一个名为Elements
的表。现在我创建一个名为Divergences
的表,它将基本上存储Elements
对。 Divergence
的目的是检查两个Elements
是否有分歧的答案。实体框架将两个表列映射到相同的相关表键
Element Divergence
--------- ----------
ElementId ElementId1
ElementId2
在上述表模式,ElementId1
和是外键在Elements
表映射到ElementId
和形成用于Divergence
表复合主键。
我使用数据库第一种方法其中我在SQL Server Management Studio中创建表,之后我在实体框架设计器中执行Update Model from Database...
。
我面临的问题是,当EF设计师生成模型时,它会在Element
类中创建2组ICollection<Element>
,即Elements
和Elements1
。
这不会给我一个Divergences
DbSet。
我想有什么是Divergence
类,我会做这样的事情代码:
Divergence d = new Divergence();
d.Element1 = element1;
d.Element2 = element2;
Database.Divergences.Add(d);
Database.SaveChanges();
,稍后:
Element e = Database.Elements.Single(e => e.ElementId == 7);
var divergences = e.Divergences;
我尝试添加一个新列到Divergence
表如下:
Element Divergence
--------- ------------
ElementId DivergenceId
ElementId1
ElementId2
这正确地l在实体框架设计器中关联到1 <-> *
关系。我终于得到了一个Divergences
DbSet,但DivergenceId
属性在代码中没用,我仍然在Element
类中获得2组属性。需要注意的是,ElementId1
和仍然构成复合主键。
您认为映射这种特定情况的正确方法是什么?感谢您的意见。
真棒Slauma!就是这样......我将以这种方式实现它,因为如你所说,没有内置的功能来映射我想要的方式。非常感谢您的关注! :) –