.net core EF codefirst
电脑版发表于:2021/5/31 17:40
前言
操作方法与Framework类似,使用前先下载EF依赖包
Install-Package Microsoft.EntityFrameworkCore.SqlServer -version 3.1.1
先定义数据表的类
//例如有一张学生表 public class Student { public int ID { get; set; } public string LastName { get; set; } public string FirstMidName { get; set; } public DateTime EnrollmentDate { get; set; } public ICollection<Enrollment> Enrollments { get; set; } }
在创建上下文对象的类
此类需要继承 Microsoft.EntityFrameworkCore.DbContext 类
public class SchoolContext : DbContext { public SchoolContext(DbContextOptions<SchoolContext> options) : base(options) { } //上下文对象的类名就是数据库的名称 //添加数据表Students为创建的表名 public DbSet<Student> Students { get; set; } }
提供创建数据库的类
public static class DbInitializer { public static void Initialize(SchoolContext context) { //创建数据库,返回布尔值 var isscuess = context.Database.EnsureCreated(); } }
启动文件中调用创建数据库的方法
//main函数中调用创建数据库 public static void Main(string[] args) { //CreateHostBuilder(args).Build().Run(); var host = CreateHostBuilder(args).Build(); CreateDbIfNotExists(host); host.Run(); } //如果数据库不存在就创建的方法 private static void CreateDbIfNotExists(IHost host) { using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; var context = services.GetRequiredService<SchoolContext>(); DbInitializer.Initialize(context); } }
配置文件appsettings.json中配置连接数据库的字符串
"ConnectionStrings": { "SchoolContext": "Server=.;Database=SchoolContext;uid=sa;password=123456" },
现在数据库已经创建好了,现在我们来添加数据,添加数据与Framework几乎一模一样
首先添加上下文的依赖,GetConectionString中的参数是配置文件中的参数
services.AddDbContext<SchoolContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SchoolContext")));
在控制器中添加依赖注入,构造函数添加
//定义一个私有只读的实例 private readonly SchoolContext schoolContext; //构造函数注入 public HomeController(SchoolContext _schoolContext) { schoolContext = _schoolContext; }
注入完成过后,往数据库添加数据
//定义一个数组 var students = new Student[] { new Student{FirstMidName="Carson",LastName="Alexander",EnrollmentDate=DateTime.Parse("2005-09-01")}, new Student{FirstMidName="Meredith",LastName="Alonso",EnrollmentDate=DateTime.Parse("2002-09-01")}, new Student{FirstMidName="Arturo",LastName="Anand",EnrollmentDate=DateTime.Parse("2003-09-01")}, new Student{FirstMidName="Gytis",LastName="Barzdukas",EnrollmentDate=DateTime.Parse("2002-09-01")}, new Student{FirstMidName="Yan",LastName="Li",EnrollmentDate=DateTime.Parse("2002-09-01")}, new Student{FirstMidName="Peggy",LastName="Justice",EnrollmentDate=DateTime.Parse("2001-09-01")}, new Student{FirstMidName="Laura",LastName="Norman",EnrollmentDate=DateTime.Parse("2003-09-01")}, new Student{FirstMidName="Nino",LastName="Olivetto",EnrollmentDate=DateTime.Parse("2005-09-01")} }; //写入数据缓冲区 foreach (Student s in students) { schoolContext .Students.Add(s); } //真正的写入数据库 schoolContext .SaveChanges();
数据库显示
从数据库读数据,方法与Framework一样
var name = schoolContext.Students.Where(a => a.ID == 5).Select(a => a.FirstMidName).FirstOrDefault();