.NET Core学习笔记(9)——Entity Framework Core之Code First
上篇我们介绍了怎么通过已有的SQLServer表来创建实体类,本篇我们改用Code First的方式,由C#代码书写的实体类来生成SQLServer表。并且通过简单的Console APP往SQLServer表写入数据。
首先我们先创建3个空的Projects,其中EfCodeFirst是作为启动项的Console程序(.NET Core 3.1)。EfCodeFirst通过Add Project Reference引用DataAccess工程(.NET Standard 2.0)。DataAccess将会包含DbContext对象,作为数据库的实际访问接口。同时DataAccess还会Add Project Reference引用Entities工程(.NET Standard 2.0)。Entities工程顾名思义,所有SQLServer表的映射实体类会写到这里。
接着我们通过NuGet给各个Project添加EntityFrameworkCore的引用,其中DataAccess需要EntityFrameworkCore.Tools以及EntityFrameworkCore.SqlServer,启动项EfCodeFirst需要EntityFramework.Design。
同时还要把CodeFirst所需的代码给补上,在Entities工程中我们添加TodoItem类:
namespace Entities { public class TodoItem { public long Id { get; set; } public string Name { get; set; } public bool IsComplete { get; set; } } }
在DataAccess工程中我们添加TodoContext对象,TodoContext继承自DbContext,同时还引用TodoItem类。实际我们也正是通过TodoContext类来实现TodoItem对象在SQLServer中的增删查改。注意这里我们通过OnConfiguring方法来指定SQLServer的Connection String。
namespace DataAccess { public class TodoContext : DbContext { public DbSet<TodoItem> TodoItems { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder options) => options.UseSqlServer(@"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=CodeFirstDB;Integrated Security=True;"); } }
接下来我们就要通过在Package Manager Console窗口通过Add-Migration命令来创建SQLServer表了。注意Default project要选择DataAccess,否则Migrations相关文件会生成到别的工程。
InitDatabase是我给Migrations脚本指定的名字,在DataAccess工程中,会加上时间前缀生成对应的Migrations类,以如下形式呈现:
此时仍没有创建SQLServer表,我们需要在Package Manager Console提示"Build succeeded."后。通过Update-Database命令来把修改应用到SQLServer中。
至此我们就可以使用TodoContext来访问SQLServer中的TodoItems表了,在EfCodeFirst工程的Main函数里添加如下代码,每次Main函数启动时查询TodoItems表的记录条数,然后新增一条记录。
static void Main(string[] args) { Console.WriteLine("Hello World!"); using (var dbContext = new TodoContext()) { var count = dbContext.TodoItems.Count(); var item = new TodoItem { Name = $"test{++count}" }; dbContext.Add(item); dbContext.SaveChanges(); } }
GitHub:
https://github.com/manupstairs/EntityFrameworkCoreSamples/tree/main/CodeFirstSample
- Asp.net Core中使用Entity Framework Core CodeFirst
- .net core Entity Framework Core Code First 框架 分层开发
- [EFCore]EntityFrameworkCore Code First 当中批量自定义列名
- 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表
- .Net Core 2.0 EntityFrameworkCore CodeFirst入门教程
- ASP.NET EntityFrameworkCore code first 多对多设计
- 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表
- 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表
- Entity Framework Code First(UnitOfWork)
- Code First Entity Framework基本与最佳添加(add/create),删除(delete/remove),修改(update/modify)操作
- EntityFramework Code First 迁移
- Entity Framework Code First 迁移数据库
- Entity Framework Code-First 文章汇集
- Code First/Entity Framework 4.1 Videos and Articles on MSDN
- EntityFramework Reverse POCO Code First 反向生成器
- Entity Framework CodeFirst尝试
- Code First :使用Entity. Framework编程(5)
- Entity Framework code first 手动修改数据库的问题
- Entity Framework Code-First(下)
- Entity Framework Code First+SQL Server,改变聚集索引,提高查询性能