今天开始学习了EF的相关内容,以前只知道ADO.NET,今天学习后觉得有必要写个相关的学习心得,今天就先写第一篇。
我们的再学习的过程中所用到的环境是Windows7+SQLServer2008+VS2012。
①下面我们便开始创建一个数据库名为Test,数据库里建立两张表Student和Class。
②之后打开VS2012新建一个控制台应用程序名为Demo1。之后在Demo1这个项目上右击添加新建项,选择ADO.NET实体数据模型,并命名为DataModel.edmx。
③选择从数据库中生成,点击下一步。
④点击新建连接,数据源选择为Microsoft SQL Server (SqlClient),因为是数据库服务器在本机,所以服务器名为.
⑤按下图所示进行选择。
⑥将两个表对象勾上,点击完成。
------------------------------------------------华丽的分割线(2017/7/24)-------------------------------------------------------------------
好吧,这篇文章好像一直就半截,补一下吧,2年啦,好快。
//添加 db.Students.Add(student); db.SaveChanges(); //修改 db.Entry(student).State = EntityState.Modified; db.SaveChanges(); //删除 Student student = db.Students.Find(id); db.Students.Remove(student); db.SaveChanges();
在使用EF框架时,我们通常都是通过调用SaveChanges方法把增加/修改/删除的数据提交到数据库,但是上下文是如何知道实体对象是增加、修改还是删除呢?答案是通过EntityState的枚举值来判断的。也就是说在操作数据库时,EF会根据EntityState这个枚举检测到实体的状态,然后执行相应的增/删/改操作。
数据库上下文会一直跟踪内存中的实体是否与数据库中的行保持同步,并由此决定当调用SaveChanges方法时会发生什么,例如,当你调用Add方法添加实体时,该实体的状态会被设置为Added,然后当调用SaveChanges方法时,数据库上下文会生成一个SQL Insert命令。
- Unchanged,对该实体,SaveChanges方法什么都不需要做,当从数据库中读取一个实体时,该实体就为这一状态。
- Modified,某些或所有实体的属性值被更改,SaveChanges方法必须生成一个Update语句。
- Deleted。实体已被标志为删除状态,SaveChanges方法必须生成一个Delete语句。
- Detached,实体没有被数据库上下文跟踪。
- Added,数据库并不存在该实体,SaveChanges方法必须生成一个Insert语句。