2010-09-23 85 views
3

OK,我有3个表,称他们为:实体框架 - 添加加入只有外键值

  • PERSONID
  • 名称

商店

  • STOREID
  • 名称

PersonStore

  • PERSONID
  • STOREID

现在,我有一个表格,让你到商店添加到人。不过,我从表单中取回商店ID。我真的不想做一个查询从Entity Framework中获取商店对象。我只想使用StoreID和Person对象添加到表中。

回答

5

默认情况下,在EF这个连接表将不会显示为一个实体,而不是你会得到一个多对多的关系,这将显示为两个导航性能

Person.Stores 
Store.People 

如果您想要在不检索实体的情况下构建多对多关系,那么附加存根实体是最好的方法。

var person = // you already have the person 
var store = new Store{StoreID = 5} // you know the storeID 

ctx.AttachTo("Stores", store); 
ctx.AttachTo("People", person); // assuming the person isn't already attached 
person.Stores.Add(store); 
ctx.SaveChanges(); 

这段代码的唯一的问题是,如果关系已经存在,所以你需要确保你正在创建一个关系

更多关于使用存根实体,如该检查将失败出my post。 希望这有助于。

亚历

从OP编辑:

由于我使用EF4,我用下面的代码来除去从连接字符串(由于从链接尖端13)。

var person = // you already have the person 
var store = new Store{StoreID = 5} // you know the storeID 

ctx.Stores.Attach(store); 
person.Stores.Add(store); 
ctx.SaveChanges(); 
+0

你是一个生活金丹!附加和相应的删除;辉煌! – 2012-11-09 03:39:12

+0

这很棒。感谢分享!! – 2017-04-06 22:22:14