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的应用的更多相关文章

  1. %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 ...

  2. 你必须知道的EF知识和经验

    注意:以下内容如果没有特别申明,默认使用的EF6.0版本,code first模式. 推荐MiniProfiler插件 工欲善其事,必先利其器. 我们使用EF和在很大程度提高了开发速度,不过随之带来的 ...

  3. 采用MiniProfiler监控EF与.NET MVC项目(Entity Framework 延伸系列1)

    前言 Entity Framework 延伸系列目录 今天来说说EF与MVC项目的性能检测和监控 首先,先介绍一下今天我们使用的工具吧. MiniProfiler~ 这个东西的介绍如下: MVC Mi ...

  4. 采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)

    前言 Entity Framework 延伸系列目录 今天我们来讲讲EntityFramework.Extended 首先科普一下这个EntityFramework.Extended是什么,如下: 这 ...

  5. EntityFramework之DetectChanges's Secrets(三)(我为EF正名)

    前言 对于应用程序开发者来说,通常不需要考虑太多对于Entity Framework中的变更追踪(change tracking),但是变更追踪和DetectChanges方法是栈的一部分,在这其中, ...

  6. ASP.NET从零开始学习EF的增删改查

           ASP.NET从零开始学习EF的增删改查           最近辞职了,但是离真正的离职还有一段时间,趁着这段空档期,总想着写些东西,想来想去,也不是很明确到底想写个啥,但是闲着也是够 ...

  7. 使用EF CodeFirst 创建数据库

    EntityFramework 在VS2015添加新建项时,选择数据->ADO.NET 实体数据模型,有一下选项 来自数据库的EF设计器,这个就是我们最常用的EntityFramework设计模 ...

  8. EF上下文对象线程内唯一性与优化

    在一次请求中,即一个线程内,若是用到EF数据上下文对象,就创建一个,这也加是很多人的代码中习惯在使用上下文对象时,习惯将对象建立在using中,也是为了尽早释放上下文对象, 但是如果有一个业务逻辑调用 ...

  9. EF里Guid类型数据的自增长、时间戳和复杂类型的用法

    通过前两章Lodging和Destination类的演示,大家肯定基本了解Code First是怎么玩的了,本章继续演示一些很实用的东西.文章的开头提示下:提供的demo为了后面演示效果,前面代码有些 ...

  10. 模仿EF,我们用JS开发的HTML5 SQLite 访问库

    今天终于有空把demo放到了RunJS上面去.请使用google chrome观看在线演示: http://sandbox.runjs.cn/show/pekbd9zb 这个库本来是我们开发的phon ...

随机推荐

  1. WEB自动化(Python+selenium)的API

    在做Web自动化过程中,汇总了Python+selenium的API相关方法,给公司里的同事做了第二次培训,分享给大家                                         ...

  2. 读《图解HTTP》有感-(HTTP首部)

    写在前面 该章节是对请求报文及响应报文的首部信息进行解析.通过该章节的学习,相信大家对首部结构,及各个首部字段的作用有个基本的了解 正文 HTTP报文由HTTP报文首部.空行以及HTTP报文主体组成. ...

  3. Java 精简Jre jar打包成exe

    #开始 最近几天都在忙一个事情,那就是尝试精简jre,我想不明白为什么甲骨文官方不出exe打包工具... 网络上精简jre的文章很多,但是原创的似乎没几个,绝大多数都是转发同一个博客, 这里借鉴了不少 ...

  4. 如何开始使用 Java 机器学习

    开始Java机器学习的最好工具是什么? 这个问题已经有一段时间了,但最近这些日子几乎每个人都在谈论人工智能和机器学习.这已经不再是一个保留给科学家和研究者的秘密,而是几乎实现于每一项新兴技术中. 在下 ...

  5. 超实用的JavaScript代码段 Item1 --倒计时效果

    现今团购网.电商网.门户网等,常使用时间记录重要的时刻,如时间显示.倒计时差.限时抢购等,本文分析不同倒计时效果的计算思路及方法,掌握日期对象Date,获取时间的方法,计算时差的方法,实现不同的倒时计 ...

  6. CSS选择器详细总结

    一.基本选择器 序号 选择器 含义 1. * 通用元素选择器,匹配任何元素 2. E 标签选择器,匹配所有使用E标签的元素 3. .info class选择器,匹配所有class属性中包含info的元 ...

  7. FreeRTOS数据结构(一)--链表和链表项

    结构体定义 /*链表结构体*/ typedef struct xLIST { listFIRST_LIST_INTEGRITY_CHECK_VALUE /*用于链表完整性检查*/ configLIST ...

  8. apigateway-kong(一)简介及部署

    时隔三年,本人重出江湖,哈哈哈 浏览之前写的博客,有些深度还不是太够.篇幅太短,并且很多专题没有坚持写下去,部分技(dai)术(ma)没有从业务中抽离出来,本人感觉好遗憾--为此,痛下决心,重拾博客, ...

  9. Smokeping

    Smokeping允许你监测多台服务器. Smokeping使用RRDtool来存储数据,另外,其可基于RRDtool输出生成相应的统计图表. Smokeping由两个部分组成.一个运行在后台.定期收 ...

  10. 【ShoppingWebCrawler】-基于Webkit内核的爬虫蜘蛛引擎概述

    写在开头 在各个电商平台发展日渐成熟的今天.很多时候,我们需要一些平台上的基础数据.比如:商品分类,分类下的商品详细,甚至业务订单数据.电商平台大多数提供了相应的业务接口.允许ISV接入,用来扩展自身 ...