EF的应用
EF是 EntityFramework 的简称。在程序和数据库交互的过程中,起到了极大的方便。
EF的使用
首先在需要使用EF的项目单击,然后 Ctrl+Shift+a 找到ADO.NET实体数据模型。

单击添加后,会让选择模型内容,目前用到的就只有 (数据表,存储过程, 视图),所以选择添加 来自数据库的EF设计器

点击下一步,会让我们选择一个数据库,如果没有自己想要的数据库连接,可以自己新建连接。然后我们会看到这个
选择是,然后直接下一步就可以了,别的都不用管。这一步中就可以选择表,视图,或者存储过程等了,这个根据自己需求添加即可。 跟之前一样,别的什么都不用管,添加好之后的截图:

最后一步点击完成就可以了。由于文件比较大,所以添加后,可能会出现卡顿的现象。
添加后,解决方案中会增加这个文件夹:

EF的实际应用(增删改查)。
首先说明一下: 添加EF 之后,会自动的给程序添加实体类。
EF的增加:
首先实例化刚才添加的EF ,再用对象初始化器将自己要添加的对象实例化,然后使用EF添加再保存即可。案例:
EFDBEntities efdb = new EFDBEntities();
Students objStudent = new Students()
{
StudentName = "小明",
ClassId = 2,
Gender = "男"
};
efdb.Students.Add(objStudent);
int result = efdb.SaveChanges();
代码详解:
- 首先实例化了 EF
- 然后使用对象初始化器将自己要添加的对象实例化
- 接下来用自己实例化的EF 添加一下刚才实例化后的对象
- 最后保存到数据库中。
最后两部的解释:这两行代码看似是冗余的,但是实际上并不冗余,少了哪一行代码都不行。其中 第一行代码就是将这个对象添加到缓存中,但是并没有上交到数据库中,而第二行代码就提交到了数据库中,然后用一个int类型的参数接受执行的行数。
(修改)
想修改,就要先找到要修改的对象。
- 首先还是实例化EF
- 其次就是查找需要修改的学员的对象。 (由于修改中用到了查询,所以在这里就不介绍查询了。直接参照这个修改的查询就可以了。)
- 修改各个属性的值
- 提交保存
在这里用到了两种查询方式,用哪个都可以,完全看个人爱好。
首先将需要修改的对象 查询出来。
Students objStudent = efdb.Students.FirstOrDefault(s => s.StudentId == 1000006);
然后修改各个属性值就可以。
objStudent.StudentName = "张红利";
objStudent.PhoneNumber = "99999999";
修改完之后提交保存。
int result = efdb.SaveChanges();
另一种查询的方式
Students objStudent = (from s in efdb.Students
where s.StudentId == 100006
select s).First<Students>();
通过主键列获取对象信息。
Students objStudent = efdb.Students.Find(100006);
注意:find只能查询主键也就是id 然后获取整个对象。里面不能查询姓名等。
如果取的是第一个值:
Students objStudents = (from s in students select s).FirstOrDefault();
如果取得是唯一值:
objStudents = (from s in students select s).SingleOrDefault();
两者的区别:
第一个值:获取学员中的第一个对象.(可以是多个)
唯一值:如果查询结果只有一个.(必须是一个)
First()、FirstOrDefault() 异同:
- 相同点:都用于获取结果集中的第一个元素
- 不同点:如果序列中不包含任何元素,前者返回null,后者返回默认值
Single()、SingleOrDefault()异同
- 相同点:都用于获取结果中的唯一元素
- 不同点:如果序列中不包含任何元素,前者返回null,后者返回默认值
- 特别注意:当数据源中包含多个元素时,这两个方法会产生异常。
(删除)
想删除,就要先找到要删除的对象。
- 首先实例化EF
- 查询需要删除的对象
- 从数据库中删除这个对象。
首先需要找到需要删除的学员对象
Students objStudent = efdb.Students.FirstOrDefault(s => s.StudentId == 100015);
然后从集合中删除对象
efdb.Students.Remove(objStudent);
最后保存到修改。
int result = efdb.SaveChanges();
.Net Framework 支持的规范函数

EF的应用的更多相关文章
- %E3%80%90%E7%BD%91%E7%BB%9C%E7%BC%96%E7%A8%8B%E3%80%91
"%3Cdiv%20class%3D%22htmledit_views%22%20id%3D%22content_views%22%3E%0A%20%20%20%20%20%20%20%20 ...
- 你必须知道的EF知识和经验
注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...
- 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)
前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...
- 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)
前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...
- EntityFramework之DetectChanges's Secrets(三)(我为EF正名)
前言 对于应用程序开发者来说,通常不需要考虑太多对于Entity Framework中的变更追踪(change tracking),但是变更追踪和DetectChanges方法是栈的一部分,在这其中, ...
- ASP.NET从零开始学习EF的增删改查
ASP.NET从零开始学习EF的增删改查 最近辞职了,但是离真正的离职还有一段时间,趁着这段空档期,总想着写些东西,想来想去,也不是很明确到底想写个啥,但是闲着也是够 ...
- 使用EF CodeFirst 创建数据库
EntityFramework 在VS2015添加新建项时,选择数据->ADO.NET 实体数据模型,有一下选项 来自数据库的EF设计器,这个就是我们最常用的EntityFramework设计模 ...
- EF上下文对象线程内唯一性与优化
在一次请求中,即一个线程内,若是用到EF数据上下文对象,就创建一个,这也加是很多人的代码中习惯在使用上下文对象时,习惯将对象建立在using中,也是为了尽早释放上下文对象, 但是如果有一个业务逻辑调用 ...
- EF里Guid类型数据的自增长、时间戳和复杂类型的用法
通过前两章Lodging和Destination类的演示,大家肯定基本了解Code First是怎么玩的了,本章继续演示一些很实用的东西.文章的开头提示下:提供的demo为了后面演示效果,前面代码有些 ...
- 模仿EF,我们用JS开发的HTML5 SQLite 访问库
今天终于有空把demo放到了RunJS上面去.请使用google chrome观看在线演示: http://sandbox.runjs.cn/show/pekbd9zb 这个库本来是我们开发的phon ...
随机推荐
- TCP的流量控制和拥塞处理
1. 利用滑动窗口实现流量控制 如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失.所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收. 利用滑动窗口机制可以 ...
- Java io使用简介
图:Java io概览图 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更 ...
- 【转】Python的下划线
原文: 1. Python中的下划线(译文) 2. [转]关于python中带下划线的变量和函数的意义 总结: 1. 单下划线开头.保护变量,不可被其他包导入使用,除非在__all__声明可以显示引用 ...
- CentOS的启动流程
因6和7俩个系列的启动流程有区别,所以我把他们分开来写 linux可看作是内核和根文件系统组成我们把内核单独拿出来总结一下 CentOS6系列启动流程 首先总结一下总体的流程,接下来展开来叙述:POS ...
- MySQL提示“too many connections”的解决办法
今天生产服务器上的MySQL出现了一个不算太陌生的错误"Too many connections".平常碰到这个问题,我基本上是修改/etc/my.cnf的max_connecti ...
- java项目中通过添加filter过滤器解决ajax跨域问题
1.在web.xml添加filter <filter> <filter-name>contextfilter</filter-name> <filter-cl ...
- PyCharm中设置字体大小
1.在file(文件)里面找到setting(设置) 2. 然后再左面Editor里面找Font,再到右面Size里面设置字体大小
- mpvue-编写微信小程序总结
一.写在前面: .....最近在写一个微信小程序项目,在看完官方微信小程序开发文档后,有一种直接想"放弃"的念头: .....使用微信小程序原生框架可以快速,方便,简洁的搭建项目, ...
- Scrapy 1.4 文档 03 Scrapy 教程
在本教程中,我们假设您已经安装了Scrapy.如果没有,请参阅安装指南. 我们将要抓取 quotes.toscrape.com,一个列出著名作家的名言(quote)的网站. 本教程将引导您完成以下任务 ...
- Layer组件多个iframe弹出层打开与关闭及参数传递
一.Layer简介 Layer是一款近年来备受青睐的web弹层组件,基于jquery,易用.实用,兼容包括IE6在内的所有主流浏览器,拥有丰富强大的可自定义的功能. Layer官网地址:http:// ...

选择是,然后直接下一步就可以了,别的都不用管。