栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

实体框架4

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实体框架4

ObjectContext.AddObject
ObjectSet.AddObject
ADDOBJECT 方法是将那些新创建的对象 存在于数据库中。该实体将获得自动生成的临时 EntityKey
,其EntityState将设置为 Added 。调用SaveChanges时,对于EF来说很清楚,该实体需要插入数据库中。

ObjectContext.Attach
ObjectSet.Attach
另一方面, Attach 用于数据库中已经 存在的 实体。Attach不会将EntityState设置为Added,而是会产生
Unchanged
EntityState,这意味着自从将它附加到上下文以来,它没有发生变化。假定要附加的对象存在于数据库中。如果在对象附加后对其进行修改,则在调用SaveChanges时,EntityKey的值将用于通过在db表中找到其匹配ID来更新(或删除)相应的行。

此外,使用Attach方法,可以定义ObjectContext中已经存在但具有 没有
自动连接。基本上,Attach的主要目的是连接已附加到ObjectContext且 不是
新实体,因此您不能使用Attach附加已添加EntityState的实体。在这种情况下,您必须使用 Add()

例如,假设您的Person实体具有一个名为 Addresses 的导航属性,它是 Address
实体的集合。假设您已经从上下文中读取了两个对象,但是它们彼此之间不相关,并且您想要这样做:

var existingPerson = ctx.Persons.SingleOrDefault(p => p.Name = "Joe Bloggs" };var myAddress = ctx.Addresses.First(a => a.PersonID != existingPerson.PersonID);existingPerson.Addresses.Attach(myAddress);// OR:myAddress.PersonReference.Attach(existingPerson)ctx.SaveChanges();


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371739.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号