实体框架 - 添加仅与外键值连接

时间:2010-09-23 14:20:49

标签: entity-framework entity-framework-4

好的,我有3张桌子,打电话给他们:

  • 是PersonID
  • 名称

商品

  • STOREID
  • 名称

PersonStore

  • 是PersonID
  • STOREID

现在,我有一个表单,允许您向一个人添加商店。但是,我从表单中获取商店ID。我真的不想进行查询以从Entity Framework获取商店对象。我只想使用StoreID和我拥有的Person对象添加到表中。

1 个答案:

答案 0 :(得分: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();

此代码的唯一问题是,如果关系已存在,它将失败,因此您需要确保创建关系

有关使用此类Stub实体的更多信息,请查看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();