使用EF进行数据库开发的时候有两个东西建:建数据库(T_Persons),建模型类(Person)。EF的三种创建方法: 1.App.config:配置文件,里面有连接数据库字符串,EF的相关配置 EDM设计器模式和XML结构 XML结构中明显有三个类型节点,分别对应EDM中的存储模型、概念模型、映射 在StudentMode.tt文件里面,可以找到实体文件和选择的数据库表的对应实体表 StudentModel.Context.cs集成自DbContext 在DbSet< T>对象中查询符合条件的实体,一般用基类 IEnumerable<Student> 类型包含的两个方法 使用DbSet<T> 中的Add方法 从DbContext中获取实体 使用DbContext获取实体 官方文档: https://docs.microsoft.com/zh-cn/ef/core/get-started/?tabs=netcore-cli一、EF的创建
1.DataBase First(数据库优先):先创建数据库表,然后自动生成EDM文件,EDM文件生成模型类。简单展示一下DataBase First 的使用。
2.Model First(模型优先):先创建Edm文件,Edm文件自动生成模型类和数据库;
3.Code First(代码优先):程序员自己写模型类,然后自动生成数据库。没有Edm。三种创建的区别
无论哪种First,一旦创建好了数据库、模型类之后,后面的用法都是一样的。业界都是推荐使用Code First,新版的EF中只支持Code First,因此我们这里只讲Code First。二、DataBase First
2.StudentModel.edmx:EDM元数据文件
3.StudentModel.Context.cs:数据库上下文类,可以理解为是映射关系类
4.StudentMode.tt:实体类集合EDM元数据
实体文件
数据库上下文类namespace DBFirst { using System; using System.Data.Entity; using System.Data.Entity.Infrastructure; public partial class StudentManagerEntities : DbContext { public StudentManagerEntities() : base("name=StudentManagerEntities") { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { throw new UnintentionalCodeFirstException(); } public virtual DbSet<Admin> Admin { get; set; } public virtual DbSet<Course> Course { get; set; } public virtual DbSet<Score> Score { get; set; } public virtual DbSet<Student> Student { get; set; } } }
DbContext-实体对象容器
作用:操作数据库的工具,负责管理对象的CRUD(增、删、改、查)操作,以及相应的事务及并发问题
特别注意:某个数据表的字段全部都是外键的时候,不会生成该表对应的实体类使用EF查询单表数据
IQueryable<Student> Where<Student>(Expression<Func<Student,bool>> predicate) Student SingleOrDefault<Student>(Expression<Func<Student,bool>> predicate)
private void Form1_Load(object sender, EventArgs e) { StudentManagerEntities studentEF = new StudentManagerEntities(); List<Student> list = studentEF.Student.ToList(); }
使用EF实现CRUD
1. 添加数据
然后使用DbContext的SaveChanges()方法 Student stu = new Student() { SName=txtName.Text.Trim(), SAge=int.Parse(txtAge.Text.Trim()),SEmail=txtEmail.Text.Trim(), SSex=radioButton1.Checked?"男":"女" }; studentEF.Student.Add(stu);//只是将实体对象添加到了数据库上下文对应的对象集合中,而并非添加到了数据库中了 int res = studentEF.SaveChanges();//将数据库上下文中的更改保存到数据库中
2.修改数据
修改数据
使用DbContext的SavaChanges()方法 if (radioButton1.Checked) { currentStu.SSex = "男"; } else if (radioButton2.Checked) { currentStu.SSex = "女"; } currentStu.SName = txtName.Text.Trim(); currentStu.SAge = int.Parse(txtAge.Text.Trim()); currentStu.SEmail = txtEmail.Text.Trim(); int res = entities.SaveChanges(); this.Close();
3.使用EF删除
使用DbSet< T> 的Remove()方法
使用DbContext的SaveChanges()方法 Student stu = studentEF.Student.Find(int.Parse(dataGridView1.SelectedRows[0].Cells["Id"].Value.ToString())); if (stu!=null) { studentEF.Student.Remove(stu); studentEF.SaveChanges(); RefreshStudent(); }
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算