EFCore 是微软推出的跨平台 ORM 框架, 想较于 EF6.X 版本, 更加轻量级. EFCore 目前已经更新到 2.x.
接下来用 CodeFirst 的方式来使用 EFCore.
1. 创建控制台程序
2. 引入 EFCore 的 Nuget 包和 Sqlserver 的扩展 (因为我这里用的 Sqlserver 数据库, 若是别的数据库如 MySQL 引入相应的包即可).
3. 创建继承成自 DbContext 上下文, 并重载 OnConfiguring 方法来构建数据库连接字符串
- public class CoreDbContext : DbContext
- {
- /// <summary>
- /// 重载 OnConfiguring 构建数据库连接字符串
- /// </summary>
- /// <param name="optionsBuilder"></param>
- protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
- {
- // 这里直接写的字符串, 实际项目中写在配置文件中, 然后读取. 这里的 EFCoreDB 就是生成的数据库名
- string connectionString = "server=127.0.0.1;uid=sa;pwd=sa123;database=EFCoreDB";
- optionsBuilder.UseSqlServer(connectionString);
- }
- }
4. 创建 Person 实体类, 通过 EFCore 映射成数据库中的表. 并在上下文中注册
- public class Person
- {
- public int ID { get; set; }
- public int Age { get; set; }
- public bool Status { get; set; }
- public string Name { get; set; }
- public DateTime CreateTime { get; set; }
- }
- public class CoreDbContext : DbContext
- {
- /// <summary>
- /// 重载 OnConfiguring 构建数据库连接字符串
- /// </summary>
- /// <param name="optionsBuilder"></param>
- protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
- {
- // 这里直接写的字符串, 实际项目中写在配置文件中, 然后读取
- string connectionString = "server=127.0.0.1;uid=sa;pwd=sasa;database=EFCoreDB";
- optionsBuilder.UseSqlServer(connectionString);
- }
- // 注册实体
- public DbSet<Person> Person { get; set; }
- }
5. 在 Program 文件中初始化数据库
- class Program
- {
- static void Main(string[] args)
- {
- var context = new CoreDbContext();
- // 告诉 EFCore 我们要创建数据库
- context.Database.EnsureCreated();
- //Console.WriteLine("Hello World!");
- }
- }
6. 启动程序, 查看效果
数据库和 Person 表已生成
生成的表结构
这里解释一下, 在实体中如果有名为 ID 的字段, 或者实体名 + ID 的字段如: PersonID, 那么 EFCore 生成的表会自动标识为主键.
备注: 上边用来创建的数据库的方法 context.Database.EnsureCreated(); 如果存在当前数据库则不会创建.
那么增加了实体, 该如何更新数据库呢? context.Database.EnsureDeleted(); 这个方法顾名思义是用来删除数据库.
先调用 EnsureDeleted 在调用 EnsureCreated 实现更新数据库的操作.
- class Program
- {
- static void Main(string[] args)
- {
- var context = new CoreDbContext();
- // 删除数据库
- context.Database.EnsureDeleted();
- // 告诉 EFCore 我们要创建数据库
- context.Database.EnsureCreated();
- //Console.WriteLine("Hello World!");
- }
- }
好嘞! 使用 EFCore 生成数据库和表就完成了.
来源: https://www.cnblogs.com/jixiaosa/p/10312143.html