EF学习和使用(一)Database First

上篇博客中介绍了ORM思想,可以说ORM思想在数据交互方面给我们带来了一次变革。他能够自动实现Entity实体的属性与关系型数据库字段的映射,增删改查的sql脚本由ORM来自动生成,使我们编码时不用考虑数据库数据结构,而是以操作实体对象的形式来完成与数据库的交互。与传统开发方式相比ORM可以使我们编写更少的代码来创建和维护应用程序。不得不说ORM这种思想的确优雅。



实现ORM思想的框架有很多,有重型的 Hibernate,EF,Nhibernate,微型的dapper,Fetalpoco等, 两类框架各有千秋,需要按照系统情况进行选择。重型的ORM框架适合与企业内部系统,使用人数最好一万以内。如果是互联网系统则应该选择微型的ORM框架。



ITOO .net版选用的是EntityFramework,对于EF已经学习和使用过一段时间了,现在来对EF做个系列的总结。

Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,EF4.1之前EF支持“Database First”和“Model First”编程方式,从EF4.1开始EF开始支持支持“Code First”编程方式,今天咱们先从最简单的Database First开始说起,建立起咱们的第一个EF程序。



“Database First”模式顾名思义:“数据库优先”,使用这种模式的前提是应用程序已经拥有相应的数据库,咱们可以使用EF设计工具由数据库生成数据模型类,也可以使用Visual Studio模型设计器修改这些模型之间对应关系。


第一步

首先创建一个控制台应用程序,然后右键添加新建项,选择“ADO.NET 实体数据模型”,名称输入ModelTest:


第二步

接着选择来“自数据库的EF设计器”即DataBaseFirst:


第三步

选择新建连接并设置连接属性:


第四步

然后选择刚才新建的连接


第五步

然后选择要映射的“User”表,完成:



创建完模型之后,你会发现Visual Studio自动为你生成了“User”实体类和一个“EFTestEntitiesContext”数据库上下文操作类:

下面简单的看一下如何使用EF进行数据查询,查询可用两种方式,Linq和Lambda。

Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EFDBFirst
{
    class Program
    {
        static void Main(string[] args)
        {
            //实例化数据库上下文
            EFTestEntities dbcontext = new EFTestEntities();

            //使用Lambda表达式查询数据
            var user = dbcontext.User.Where(o => o.Name == "qiumuxiaq141812").ToList();

            //Linq语句查询
            var user1 = from o in dbcontext.User
                        where o.Name == "qiumuxiaq141813"
                        select o;

            //打印查询结果
            if (user.Any())
            {
                Console.WriteLine("Lambda方式:"+ user.First().Name + "----" + user.First().Sex);
                Console.WriteLine("Linq方式:" + user1.First().Name + "----" + user1.First().Sex);
            }

            Console.Read();
        }
    }
}


执行结果如下图:



注意:如果咱们的数据库表结构发生改变后,只需在模型设计视图空白处右键,选择“从数据库更新模型”接着按照向导操作即可将模型更新。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-12 19:22:26

EF学习和使用(一)Database First的相关文章

EF学习笔记(十一):实施继承

学习总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上篇链接:EF学习笔记(十) 处理并发 本篇原文链接:Implementing Inheritance 面向对象的世界里,继承可以很好的重用代码.在本章就对Instructor和Student两个类进行实施继承处理,这两个类有公用的属性,比如LastName等,也有私有的属性: 可以不用增加任何页面,进行修改一些代码,这些修改后的继承关系就会自动反应到数据库中. 通过下图可以看到两个类有哪些公用属性: 那么就可以建一个

EF学习和使用综合

一.(引)你必须知道的EF知识和经验 二.(引)EF学习和使用(七)EF性能优化篇 三.(引)采用EntityFramework.Extended 对EF进行扩展(Entity Framework 延伸系列2)

EF学习笔记(九):异步处理和存储过程

总目录:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇:EF学习笔记(八):更新关联数据 本篇原文:Async and Stored Procedures 为何要采用异步? 一个Web服务器肯定有可用线程的限制,那么在一些访问量特别大的情况下,线程肯定会消耗完:这个时候服务器肯定处理不了请求,必须等线程里处理结束才可以处理请求: 在非异步的时候,很多线程都处于等待状态,并不是一直在工作,而是在等类似于I/O等处理结束: 采用异步的时候,当一个处理在等待I/O处理结束的时

EF学习笔记(八):更新关联数据

学习笔记主目录链接:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇链接:EF学习笔记(七):读取关联数据 本篇原文链接:Updating Related Data 本篇主要考虑对于有关联的数据进行新增.删除.更新操作:比如Course .Instructor: 对于Course来说,新增时候必须定义属于哪个Department,所以在新增.更新操作的时候,必须要用户选择Department: MVC5在选择基础控制器及视图框架的时候,如果选择EF的操作框架,则会自动带一

EF 学习系列二 数据库表的创建和表关系配置(Fluent API、Data Annotations、约定)

上一篇写了<Entity Farmework领域建模方式 3种编程方式>,现在就Code First 继续学习 1.数据库表的创建 新建一个MVC的项目,在引用右击管理NuGet程序包,点击浏览搜索EF安装,我这里主要是EF6.0 以上的学习 所以都安装6.0 以上的版本 接下来在Model文件夹下面创建一个Customer类 public class Customer { public int ID { get; set; } public string Name { get; set; }

EF学习(一)

今天开始学习了EF的相关内容,以前只知道ADO.NET,今天学习后觉得有必要写个相关的学习心得,今天就先写第一篇. 我们的再学习的过程中所用到的环境是Windows7+SQLServer2008+VS2012. ①下面我们便开始创建一个数据库名为Test,数据库里建立两张表Student和Class. ②之后打开VS2012新建一个控制台应用程序名为Demo1.之后在Demo1这个项目上右击添加新建项,选择ADO.NET实体数据模型,并命名为DataModel.edmx. ③选择从数据库中生成,

EF学习总结——CodeFirst

EF面向数据的一软件应用程序的技术,从名称来看,Entity Framework,实体框架,为什么说是面向数据呢?这里涉及到了EF的操作原理.它可以直接通过建立的实体来映射到数据库中的每张表,同时通过数据库中的表来映射实体中的各个属性.那么这里就涉及到三个对象,数据库,实体和code,所以,EF在构建映射关系时,也包含三种不同的构建方式,DataBaseFirst,ModelFirst和CodeFirst. 关于前两种的构建方式,均属于图形化界面方式,根据提示一步一步往下走,很容易完成,第三种c

asp.net EF学习系列----深入理解查询延迟加载技术

ado.net EF是微软的一个ORM框架,使用过EF的同学都知道EF有一个延迟加载的技术. 如果你是一个老鸟,你可能了解一些,如果下面的学习过程中哪些方面讲解的不对,欢迎批评指教.如果一个菜鸟,那我们就一起开始今天的学习. 首先,提出以下几个问题. 何为延迟加载呢? 我们该如何使用呢? 我们为什么要使用延迟加载技术呢? 延迟加载技术有什么优.缺点呢? 好,带着上面的问题我们开始今天的学习. 1.何为延迟加载 EF的延迟加载,就是使用Lambda表达式或者Linq 从 EF实体对象中查询数据时,

EF学习总结&mdash;开篇

学习EF之前要熟悉以下知识: 1.自动属性(Auto-Implemented Properties) //以前的写法 private string _userName; public string UserName { get { return _userName; } set { _userName= value; } } //现在 public string_userName {get;set;} 2.隐式类型var 它是在编译已经能确定变量的类型,是根据后面的值自动推断类型,编译时把推断的