好的,我有 3 个表,称它们为:
人
- 个人ID
- 姓名
商店
- 商店编号
- 姓名
个人存储
- 个人ID
- 商店编号
现在,我有一个表单可以让您为某人添加商店。但是,我正在从表单中取回商店 ID。我真的不想查询以从 Entity Framework 中获取商店对象。我只想使用我拥有的 StoreID 和 Person 对象添加到表中。
最佳答案
默认情况下,在 EF 中,此连接表不会显示为实体,而是您将获得多对多关系,该关系将显示为两个导航属性
即
Person.Stores
Store.People
如果您想在不检索实体的情况下建立多对多关系,那么附加 stub 实体是最好的方法。
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();
关于entity-framework - Entity Framework - 添加以仅使用外键值连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3779354/