2011-07-07 61 views
2

我已经使用MSSQL建立了一个关系数据库,我试图使用实体框架与它交谈,但我遇到了一些问题。 (这是我第一个EF项目)。在实体框架中使用1:M-> M:1的问题

我能够在这两个插入数据Machines表,并使用Contacts表:

_db.AddToMachines(new Machine { MachineModelId = 0, Owner = "Test", SerialNo = "34242341" }); 
_db.SaveChanges(); 

但我怎么可以将联系人添加到机?

Small segment of the database

EF

+0

EDM模型的外观如何? –

+0

@Enrico Campidoglio:用新图片更新了问题。 – Sindre

回答

3

Machines实体应称为Contacts,反之亦然导航属性。只需将这些对象添加到这些属性。
例子:

var machine = new Machine { MachineModelId = 0, 
          Owner = "Test", SerialNo = "34242341" }; 
var contact = new Contact { ... }; 
machine.Contacts.Add(contact); 

_db.AddToMachines(machine); 
_db.SaveChanges(); 

这应该插在Machines表的新条目,在Contacts表中的新条目,并在MachineContacts表引用其他两个表中的新条目新条目。

+0

EDM模型可能包含一个'MappingContacts'映射表的实体,它与'Machine'和'Contact'实体有M:1的关系。在这种情况下,必须将新的'MachineContact'对象添加到'Machine.MachineContacts'和'Contact.MachineContacts'导航属性中。 –

+0

@Enrico:这是不太可能的,因为像OP所示的纯映射表通常不会创建为实体,因为它们在OOP世界中不是必需的。 –

+0

@Sindre:你是什么意思“不能添加任何东西”?怎么了? –