什么是Entity Framework

简单的说就是

不用你创建Model实体类,不用你编写sql语句,就能实现与数据库数据交互

在SSMS创建两个表,用于测试

也可以直接在EF中设计模型

使用VS2017

在项目中添加实体数据模型

这里,直接选择“来自数库的EF设计器”

来自数库的EF设计器:

基于现有数据库在 EF 设计器中创建一个模型。您可以选择数据库连接、模型设置以及要在模型中包括的数据库对象。从该模型生成您的应用程序将与之交互的类。

空EF设计器模型:

在 EF 设计器中创建一个空模型作为以可视化方式设计您的模型的起点。之后,可以从您的模型生成数据库。从该模型生成您的应用程序将与之交互的类。

空Code First模型:

创建一个空的 Code First 模型作为使用代码设计您的模型的起点。之后,可以从您的模型生成数据库。

来自数据库的Code First:

基于现有数据库创建 Code First 模型。您可以选择数据库连接、模型设置以及要包括在模型中的数据库对象。

连接数据库

选择表

生成模型

可以通过右键菜单进行不同操作

从数据库更新模型:数据库修改后,可以进行该操作,更新模型

根据模型生成数据库:生成sql脚本

添加代码生成项:根据模型生成实体模型

创建后

其中有三个重要的类

Student.cs下的Student

public partial class Student
{public int ID { get; set; }public string Name { get; set; }public Nullable<int> Grade { get; set; }public Nullable<int> Class { get; set; }public Nullable<int> Score { get; set; }public string Description { get; set; }
}

Score.cs下的Score

public partial class Score
{public int ID { get; set; }public Nullable<int> StudentID { get; set; }public Nullable<int> CourseID { get; set; }public Nullable<double> Score1 { get; set; }
}

School.Context.cs下的SchoolEntities

public partial class SchoolEntities : DbContext
{public SchoolEntities(): base("name=SchoolEntities"){}protected override void OnModelCreating(DbModelBuilder modelBuilder){throw new UnintentionalCodeFirstException();}public virtual DbSet<Score> Scores { get; set; }public virtual DbSet<Student> Students { get; set; }
}

问题:当我们在数据库添加字段后,模型怎么同步?

方法1:在模型中右键点击从数据库更新模型,数据就会更新到模型,然后保存模型,会自动重新生成实体模型类

方法2:在模型中右键点击从数据库更新模型,数据就会更新到模型,然后选择菜单栏--生成--转换所有T4模板

问题:当在模型中添加字段后,怎么更新数据库?

方法1:在模型中右键点击根据模型生成数据库,会生成sql脚本,但是这样,会把所有的表都先删除,再创建,所有的数据都会清空

方法2:直接在数据库表中添加字段

在开发初期,表中没有重要数据时,可以使用方法1,执行脚本

如果数据库存在重要数据,必须保留,就只能在数据库表添加字段

接下来,就可以对数据库进行增删改查操作了

首先,创建一个数据库对象

 SchoolEntities school = new SchoolEntities();

添加一条记录

public void Add(Student stu)
{school.Students.Add(stu); school.SaveChanges();
}

public void Add(Student stu)
{school.Entry(stu).State = EntityState.Added;school.SaveChanges();
}

添加多条数据

public void Add(List<Student> list)
{school.Students.AddRange(list);school.SaveChanges();
}

删除一条记录

public void Delete(Student stu)
{school.Students.Remove(stu);school.SaveChanges();
}

public void Delete2(Student stu)
{school.Entry(stu).State = EntityState.Deleted;school.SaveChanges();
}

删除多条记录

public void Delete(List<Student> list)
{school.Students.RemoveRange(list);school.SaveChanges();
}

public void Delete(List<Student> list)
{foreach (var item in list){school.Entry(item).State = EntityState.Deleted;}school.SaveChanges();
}

修改一条记录

public void Update(Student stu)
{school.Entry(stu).State = EntityState.Modified;school.SaveChanges();
}

修改多条记录

public void Update(List<Student> list)
{foreach (var item in list){school.Entry(item).State = EntityState.Modified;}school.SaveChanges();
}

修改单个列,比如只修改Name字段

public void Update(Student stu)
{school.Students.Attach(stu);school.Entry(stu).Property(s => s.Name).IsModified = true;school.SaveChanges();
}

school.Entry(stu).Property("Name").IsModified = true;

查询全部Students

var list = school.Students.ToList();

根据条件查询

var stus1 = school.Students.Where(s => s.Name == "哈哈").ToList();

根据主键查询

var stu1 = school.Students.Find(2);

一条记录

var stu = school.Students.FirstOrDefault(s => s.Name == "哈哈");

【EF】Entity Framework快速入门相关推荐

  1. Entity Framework快速入门笔记第四篇—ModelFirst

    前言:在上一篇博客中我们做了一个小的Demo,使用EF实现了对数据库的增删改查的操作,所谓学习,我们就要学会举一反三,所以好好学习一下上一篇的内容还是方便以后的扩展学习,这篇博客我们主要来研究一下Mo ...

  2. 实体框架(Entity Framework)快速入门

    实体 框架 (Entity Framework )简介 实体框架Entity Framework 是 ADO .NET 中的一组支持 开发 面向数据的软件应用程序的技术.是微软的一个ORM框架. OR ...

  3. 简单了解实体框架EF(Entity Framework)

    1)什么是EF框架 全称EntityFramework 官方点的解释是Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架. 什么是O ...

  4. 【转】Robot Framework 快速入门

    目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...

  5. 灵动思绪EF(Entity FrameWork)

    很久之前就想写这篇文章了,但是由于种种原因,没有将自己学习的EF知识整理成一片文章.今天我就用CodeFirst和ModelFirst两种方式的简单案例将自己学习的EF知识做个总结. 在讲解EF之前, ...

  6. EF(Entity Framework、EF Core)

    学习EF的前提: 熟悉Linq和ADO.Net, 熟悉委托和Lamdba 在使用EF框架进行开发时,我们大多情况使用Linq进行数据查询和操作,而EF底层实现是用ADO.Net进行封装的 EF框架其实 ...

  7. EF | Entity framework

    1 首先在项目中添加一个ADO.NET实体数据模型,选好需要的表后,完成.然后它就会自动给我们应用了如下这些类库,下面是介绍这些类库的作用,及对edmx这个XML文件进行介绍 关于edmx文件的介绍 ...

  8. Django REST framework快速入门

    1)简介: 接口使用REST framework,REST framework是一套基于Django 的 REST 框架,是一个强大灵活的构建 Web API 的工具包. 写接口三步完成:连接数据库. ...

  9. .Net Micro Framework 快速入门

    一.简介 Microsoft .NET Micro Framework 2001年由微软研究院开始研发,并随后在其MSN Direct项目中使用该技术,2007年9月微软对外发布2.0,2008年10 ...

最新文章

  1. adapter调用notifyDataSetChanged刷新没有起作用的原因
  2. 用python画漫画_Python——turtle绘制动漫形象(魔法少女小圆晓美焰,super beautiful)...
  3. SVN入门:流程简介 安装配置 项目库配置 客户端 上线方案
  4. php冒泡 插入选择 排序,说说PHP数组的三种排序(冒泡/选择/插入)方法
  5. apache虚拟主机、日志轮询、日志统计、去版本优化
  6. java中的类、成员变量、方法的修饰符。
  7. Linux学习之七--mysql的安装使用
  8. 给mac配置adb 路径
  9. 基于SaltStack完成LVS的配置管理
  10. ORACLE_mldn_002
  11. 【数学建模】2017年B题
  12. sap销售发货的流程_SAP系统销售流程
  13. Gitee更新代码提示:master has no tracked branch
  14. unity源码怎么变成游戏_传奇是怎么从最不“烧钱”的游戏变成最“烧钱”的游戏的...
  15. MTK-EIS电子防抖-gyro校准
  16. 交社保竟然还能领失业补助金,自己尝试去申请
  17. 如何防止亚马逊账号关联的一些建议值得卖家们收藏?
  18. php路由固件升级提示,【2017年整理】路由器固件修改教程(个人理解)-无线路由区-中国无线论坛 -.doc...
  19. centos7安装elasticsearch7
  20. Seastar源码阅读(三)future

热门文章

  1. 小程序常见的问题你一定遇到过!
  2. ffmpeg学习心得之一键处理视频图片合成加图片水印文字水印裁剪
  3. IDEA安装Spark
  4. javascript毫秒计时器_JavaScript分秒倒计时器实现方法
  5. strtoul和errno的合作
  6. 当可解释人工智能遇上知识图谱
  7. DapuStor亮相网络、体系结构和存储国际峰会(NAS 2021)
  8. 编程题:将字符串转换成整数 C++实现
  9. 仿微信多人音视频通话界面
  10. 2021年金属非金属矿山(地下矿山)安全管理人员及金属非金属矿山(地下矿山)安全管理人员实操考试视频