好的,我有3张桌子,打电话给他们:
人
商品
PersonStore
现在,我有一个表单,允许您向一个人添加商店。但是,我从表单中获取商店ID。我真的不想进行查询以从Entity Framework获取商店对象。我只想使用StoreID和我拥有的Person对象添加到表中。
答案 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();