What?

EF的全称是Entity Framework,也叫实体框架。是微软以ADO.Net为基础开发出来的对象关系映射(ORM)解决方案,它解决了对象持久化问题,将程序员从编写麻烦的SQL语句当中解放出来。就是用操作对象的方式来操作数据库,自动生成与数据库表结构的映射关系。EF相当于一个中继,完成数据转换。

Why?

  1. 应用程序可以通过更加以应用程序为中心的概念性模型(包括具有继承性、复杂成员和关系的类型)来工作。
  2. 可以在不更改应用程序代码的情况下更改概念性模型与特定于存储的架构之间的映射。
  3. 应用程序不再对特定的数据引擎或存储架构具有硬编码依赖性。
  4. 开发人员可以使用可映射到各种存储架构(可能在不同的数据库管理系统中实现)的一致的应用程序对象模型。
  5. 多个概念性模型可以映射到同一个存储架构。语言集成查询支持可为查询提供针对概念性模型的编译时语法验证。

How?

使用EF进行数据库开发的时候有两个东西要建:建数据库(T_Persons),建模型类(Person)。根据这两种创建的顺序有EF的三种创建方法:
(DataBase First 简单,方便,但是当项目打了之后会非常的痛苦;Code First入门门槛高,但是适合大于大项目。Model First…基本上没有人使用)

  1. DataBase First(数据库优先):先创建数据库表,然后自动生成EDM文件,EDM文件生成类模型;
  2. Model First(模型优先):先创建Edm文件,Edm文件自动生成模型类和数据库;
  3. Code First(代码优先):程序员自己写模型类,然后自动生成数据库。没有Edm。
    当修改模型类之后,EF使用“DB Miguration” 自动帮我们更新数据库,但是这种方式只适用于项目的初始阶段不合适大项目的开发流程和优化。在初学EF阶段,我们最好禁用“DB Miguration”, 采用更实际的“手动建数据库和模型类”的方式。方便我们理解EF原理。

练习一下吧(Code First)

安装EF

添加项目——控制台应用程序

安装EF——程序包管理控制台——输入:Install-Package EntityFramework

App.Config 配置连接字符串

 <connectionStrings><add name="connStr" connectionString="Data Source=192.168.17.132; Initial Catalog=newssystem;User ID=sa;Password=123" providerName="System.Data.SqlClient"/></connectionStrings>

代码部分

实体类

namespace FluentAPI1
{public class Person{public long Id { get; set; }public string Name { get; set; }public DateTime CreateDateTime { get; set; }public int? Age { get; set; }}
}
namespace FluentAPI1
{public class Dog{public long Id { get; set; }public string Name { get; set; }}
}

实体关系映射

namespace FluentAPI1.EntityConfig
{ class PersonConfig :EntityTypeConfiguration<Person>{public PersonConfig(){this.ToTable("T_Persons");}}
}
namespace FluentAPI1.EntityConfig
{class DogConfig : EntityTypeConfiguration<Dog>{public DogConfig(){this.ToTable("T_Dogs");}}
}

数据库上下文

namespace FluentAPI1
{//DbContext是数据库上下文,定义了从实体对象到数据库的映射,从数据库中检索数据,就要使用它。class MYContext : DbContext{public MYContext():base("name=connStr"){}//DbSet:表示可用于创建,读取,更新和删除操作的实体集。public DbSet<Person> Persons { get; set; }public DbSet<Dog> Dogs { get; set; }protected override void OnModelCreating(DbModelBuilder modelBuilder){//OnModelCreating:重写此方法以进一步配置通过DbSet派生上下文中属性中公开的实体类型按惯例发现的模型。//AddFromAssembly是从某个程序集中加载所有继承自EntityTypeConfiguration类到配置中//列明映射规则base.OnModelCreating(modelBuilder);modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly());} }
}

增删改查

static void Main(string[] args){using (MYContext ctx = new MYContext()){Person p1 = new Person();p1.Age = 18;p1.CreateDateTime = DateTime.Now;p1.Name = "EF";ctx.Persons.Add(p1);ctx.SaveChanges();//对已添加,已修改或已删除状态的实体的数据库执行INSERT,UPDATE或DELETE命令。 //两种查询的方法//1. //var persons = ctx.Persons.Where(p => p.Age > 10);//2. /*var persons = from p in ctx.Personswhere p.Age > 10select p;foreach(var p in persons ){Console.WriteLine(p);}*///删除一条数据/* var person = ctx.Persons.Where(p => p.Id == 4).SingleOrDefault();if(person==null){Console.WriteLine("已被删除");}else{ctx.Persons.Remove(person);ctx.SaveChanges();}*///删除多条数据(最保险的方法,先查在删,大量数据时候用“状态管理”)/*ctx.Persons.RemoveRange(ctx.Persons.Where(p => p.Age > 10));ctx.SaveChanges();*///更新数据var persons = ctx.Persons;foreach(var p in persons){p.Age++;}ctx.SaveChanges();Console.ReadKey();                       }}

图示

EF框架,认识一下!相关推荐

  1. .NET EF框架的安装、及三种开发模式

    一.EF框架的安装: 要在VS(如Visual Studio 2012)中使用EF框架,就需要先进行安装. 我们需要给这个应用安装EntityFramework包,引入EF框架相关的内容,我们需要引入 ...

  2. c ef框架-mysql_.net EF框架 MySql實現實例

    1.nuget中添加包EF和MySql.Data.Entity 2.config文件添加如下配置 1.配置entitframework節點(一般安裝EF時自動添加) 2.配置system.data節點 ...

  3. ASP.NET MVC+EF框架+EasyUI实现权限管理(附源码)

    前言目录 前言:时间很快,已经快到春节的时间了,这段时间由于生病,博客基本没更新,所以今天写一下我们做的一个项目吧,是对权限的基本操作的操作,代码也就不怎么说了,直接上传源码和图片展示,下面我们直接进 ...

  4. .net EF框架 MySql实现实例

    1.nuget中添加包EF和MySql.Data.Entity 2.config文件添加如下配置 1.配置entitframework节点(一般安装EF时自动添加) <entityFramewo ...

  5. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据 ...

  6. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建

    ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建 原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建    ASP.NET MV ...

  7. Net EF框架+ MySql示例

    1.nuget中添加包EF和MySql.Data.Entity 2.config文件添加如下配置 1.配置entitframework节点(一般安装EF时自动添加) <entityFramewo ...

  8. EF框架中,在实体中手动更新字段,数据库数据未同步到程序中应该怎么解决呢?

    在一些技术不是很强的选手手中,设计数据库时,难免会未考虑到某些字段,只能到后期实现功能时,才能觉察出来数据库中或是少写字段,或是多加了无用的字段,故我们还不得不去数据库中做些手脚. 本文列举的是在as ...

  9. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除)...

    ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除) 原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过 ...

  10. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证)...

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框 ...

最新文章

  1. JS中Base64的编码与解码
  2. AOP的两种实现方式
  3. 虚拟机屏幕界面自适应调整
  4. java装饰模式模拟流_Java 装饰模式 io流
  5. Hadoop之Hadoop数据压缩
  6. leetcode945. 使数组唯一的最小增量(排序)
  7. Microsoft Press免费电子书地址
  8. 50多款51单片机程序源码原理图编程源代码
  9. 最简单的STM32入门教程----闪烁LED
  10. matlab 离散求偏导,matlab怎么求离散曲面的偏导数
  11. efi shell的英文介绍_EFI和EFI Shell命令简介
  12. SQL对象名无效的解决
  13. 报表类-金蝶K3一次查询所有供应商采购价格
  14. c51语言如何按位异或,51单片机教程:单片机逻辑与或异或指令详解
  15. 看完这篇文章前千万别做微信营销
  16. 计算机如何删除已连接的打印机驱动程序,怎么删除网上共享的打印机驱动程序...
  17. choco无法将choco识别_choco入门
  18. steamship 使用gpt-4
  19. 【搞定Go语言】第2天6:Go语言基础之切片
  20. 【S0020】【素材】梦幻抽象设计感海报PSD源文件

热门文章

  1. 英语二课文语法Uint2B
  2. 我们整理了2017年最新政府大数据应用案例!
  3. Airflow dag迁移
  4. TensorRT之条件控制
  5. 基于Java毕业设计影片租赁系统源码+系统+mysql+lw文档+部署软件
  6. 机器人学导论——雅可比:速度和静力
  7. dbf 到 excel转换
  8. 推荐算法-皮尔逊相关系数的相似度
  9. 不容错过,高性价比Modbus转MQTT网关
  10. The group member's supported protocols are incompatible with those of existing members