【EF】Entity Framework快速入门
什么是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快速入门相关推荐
- Entity Framework快速入门笔记第四篇—ModelFirst
前言:在上一篇博客中我们做了一个小的Demo,使用EF实现了对数据库的增删改查的操作,所谓学习,我们就要学会举一反三,所以好好学习一下上一篇的内容还是方便以后的扩展学习,这篇博客我们主要来研究一下Mo ...
- 实体框架(Entity Framework)快速入门
实体 框架 (Entity Framework )简介 实体框架Entity Framework 是 ADO .NET 中的一组支持 开发 面向数据的软件应用程序的技术.是微软的一个ORM框架. OR ...
- 简单了解实体框架EF(Entity Framework)
1)什么是EF框架 全称EntityFramework 官方点的解释是Entity Framework是ADO.NET 中的一套支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架. 什么是O ...
- 【转】Robot Framework 快速入门
目录 介绍 概述 安装 运行demo 介绍样例应用程序 测试用例 第一个测试用例 高级别测试用例 数据驱动测试用例 关键词keywords 内置关键词 库关键词 用户定义关键词 变量 定义变量 使用变 ...
- 灵动思绪EF(Entity FrameWork)
很久之前就想写这篇文章了,但是由于种种原因,没有将自己学习的EF知识整理成一片文章.今天我就用CodeFirst和ModelFirst两种方式的简单案例将自己学习的EF知识做个总结. 在讲解EF之前, ...
- EF(Entity Framework、EF Core)
学习EF的前提: 熟悉Linq和ADO.Net, 熟悉委托和Lamdba 在使用EF框架进行开发时,我们大多情况使用Linq进行数据查询和操作,而EF底层实现是用ADO.Net进行封装的 EF框架其实 ...
- EF | Entity framework
1 首先在项目中添加一个ADO.NET实体数据模型,选好需要的表后,完成.然后它就会自动给我们应用了如下这些类库,下面是介绍这些类库的作用,及对edmx这个XML文件进行介绍 关于edmx文件的介绍 ...
- Django REST framework快速入门
1)简介: 接口使用REST framework,REST framework是一套基于Django 的 REST 框架,是一个强大灵活的构建 Web API 的工具包. 写接口三步完成:连接数据库. ...
- .Net Micro Framework 快速入门
一.简介 Microsoft .NET Micro Framework 2001年由微软研究院开始研发,并随后在其MSN Direct项目中使用该技术,2007年9月微软对外发布2.0,2008年10 ...
最新文章
- adapter调用notifyDataSetChanged刷新没有起作用的原因
- 用python画漫画_Python——turtle绘制动漫形象(魔法少女小圆晓美焰,super beautiful)...
- SVN入门:流程简介 安装配置 项目库配置 客户端 上线方案
- php冒泡 插入选择 排序,说说PHP数组的三种排序(冒泡/选择/插入)方法
- apache虚拟主机、日志轮询、日志统计、去版本优化
- java中的类、成员变量、方法的修饰符。
- Linux学习之七--mysql的安装使用
- 给mac配置adb 路径
- 基于SaltStack完成LVS的配置管理
- ORACLE_mldn_002
- 【数学建模】2017年B题
- sap销售发货的流程_SAP系统销售流程
- Gitee更新代码提示:master has no tracked branch
- unity源码怎么变成游戏_传奇是怎么从最不“烧钱”的游戏变成最“烧钱”的游戏的...
- MTK-EIS电子防抖-gyro校准
- 交社保竟然还能领失业补助金,自己尝试去申请
- 如何防止亚马逊账号关联的一些建议值得卖家们收藏?
- php路由固件升级提示,【2017年整理】路由器固件修改教程(个人理解)-无线路由区-中国无线论坛 -.doc...
- centos7安装elasticsearch7
- Seastar源码阅读(三)future