3
OK,我有3个表,称他们为:实体框架 - 添加加入只有外键值
人
- PERSONID
- 名称
商店
- STOREID
- 名称
PersonStore
- PERSONID
- STOREID
现在,我有一个表格,让你到商店添加到人。不过,我从表单中取回商店ID。我真的不想做一个查询从Entity Framework中获取商店对象。我只想使用StoreID和Person对象添加到表中。
OK,我有3个表,称他们为:实体框架 - 添加加入只有外键值
人
商店
PersonStore
现在,我有一个表格,让你到商店添加到人。不过,我从表单中取回商店ID。我真的不想做一个查询从Entity Framework中获取商店对象。我只想使用StoreID和Person对象添加到表中。
默认情况下,在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();
你是一个生活金丹!附加和相应的删除;辉煌! – 2012-11-09 03:39:12
这很棒。感谢分享!! – 2017-04-06 22:22:14