关于EF框架EntityState的几种状态】的更多相关文章

在使用EF框架时,我们通常都是通过调用SaveChanges方法把增加/修改/删除的数据提交到数据库,但是上下文是如何知道实体对象是增加.修改还是删除呢?答案是通过EntityState的枚举值来判断的.也就是说在操作数据库时,EF会根据EntityState这个枚举检测到实体的状态,然后执行相应的增/删/改操作. 在使用EF框架时,我们通常都是通过调用SaveChanges方法把增加/修改/删除的数据提交到数据库,但是上下文是如何知道实体对象是增加.修改还是删除呢?答案是通过EntitySta…
  我们还是以订单表为例   1:系统推荐的方法,先查询出来,然后调用remove方法进行删除 我们删除id大于等于4的 static void Main(string[] args) { Delete(o => o.Id >= 4); //这里的参数是个 lambda 表达式 }   public static void Delete(Expression<Func<Order, bool>> whereLambda) { //先查询 List<Order>…
一.遇到的神奇的事情 使用jpa操作数据库,当我使用findAll()方法查处一个List的对象后,给对这个list的实体进行了一些操作,并没有调用update 或者 saveOrUpdate方法,更改后的数据却神奇的保存到数据库里面去了. 最后简单粗暴的解决办法是把这份从数据里面查出来的List 复制了一份,然后再操作,再返回.数据就正常了,数据库也没更新.后面找了资料才发现是jpa是对hibernate的封装,底层是hibernate,这是hibernate的持久状态搞的鬼. 二.hiber…
CodeFirst是EF框架的第三种方式,也是最为复杂一种方式,本文将以EF4.1版本为基础,简要讲解一下用法,同时,也介绍DbContext的用法. 本文采用的示例仍然是前两篇采用的博客用户的示例.故不在此对业务进行描述. 首先新建一个C#控制台应用程序,并命名为EFCodeFirstSample. 利用Nuget为该项目添加引用Entity Framework4.1的引用. PM> Install-Package EntityFramework 当然,你也可以用常规的方式,先下载EF4.1安…
最近半个多月没更新原因是在赶项目...在做项目的时候就会发现自己很多问题,也有很多东西要记录,今天就记录一下对ef新的认识. 也就是关于ef的五种状态管理. Unchanged(持久态) Midified(修改) Deleted(删除) Added(新增) Detached(游离态:相当于new出来的和数据库无关,在我看来也该就是using的时候的状态) 解释一下整个图的流程吧. Added,也就是从游离态到 Added新增状态,在集合DbSet调用Add()方法之前都是处于游离的状态,调用之后…
EF框架step by step(1)—Database-First EF框架step by step(2)—Model-First EF框架step by step(3)—Code-First 通过项目,我们了解到EF框架有三种数据持久化的方式,也就是标题中我所提到的三种.那么这些方式之间又有什么联系和区别呢? 先分别介绍一下这三种方法的联系: 1.Database First是基于已存在的数据库,利用某些工具(如VS提供的EF设计器)创建实体类,数据库对象与实体类的匹配关系等,你也可以手动修…
使用EF之前必须要对EF有个宏观的了解.学习任何一种技术都要像门卫一样问几个问题. 第一,它是谁? 第二,从哪里来? 第三,到哪里去? 默念一遍:不谋全局者,不足谋一域. Entity Framework是ORMapping的一种具体实现,那ORMapping又是什么呢?ORM--ObjectRelation Mapping,即对象关系映射框架/数据持久化框架,是根据实体对象操作数据表中数据的一种面向对象的操作框架. 其实Entity Framework的底层也是调用Ado.Net,它是更高层次…
一.EF框架的安装: 要在VS(如Visual Studio 2012)中使用EF框架,就需要先进行安装. 我们需要给这个应用安装EntityFramework包,引入EF框架相关的内容,我们需要引入EF相关程序集.但是我们有更好的选择那就是NuGet.通过NuGet进行在线安装:项目中右键选择"Manage NuGet Packages…”:选择Online:再选择“EntityFramework”:然后点击安装即可,具体参考下图. 二.EF安装好了之后,下来了解这三种开发模型: 1.代码优先…
1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configurati…
对象的三种状态 瞬时状态: 实体 没有id.没有与session关联 持久化状态: 特点:持久化状态对象的任何改变都会同步到数据库中 游离态[也称作托管态]: 实体 有id,没有与session关联 Hibernate向数据库中增加用户调用addUser()方法时 //增加用户 public void addUser() { //得到配置信息 Configuration config = new Configuration().configure(); //创建sessionFactiory对象…