EFCore的全称是Microsoft.EntityFrameworkCore。
EFCore的作用主要体现在以下几个方面:
对象关系映射(ORM):EFCore通过对象关系映射,将数据库表映射为.NET对象,使得开发人员可以使用面向对象的方式来操作数据库,而不需要编写复杂的SQL查询语句。这极大地简化了数据访问层的开发过程,提高了开发效率。
跨数据库支持:EFCore支持多种关系数据库,如SQL Server、MySQL、SQLite、PostgreSQL等。通过简单的配置更改,可以轻松切换数据库提供程序,而不需要修改应用程序的代码。这种灵活性使得EFCore能够适应各种数据库环境。
自动迁移:EFCore提供了自动迁移功能,可以根据模型的变化自动更新数据库结构。这使得数据库的版本控制和升级变得更加容易。
异步查询:EFCore支持异步查询,这可以提高应用程序的性能和响应能力。在处理大量数据或需要长时间运行的查询时,异步查询可以有效地避免阻塞主线程,提高应用程序的并发性能。
LINQ支持:EFCore通过集成LINQ(Language Integrated Query)提供了强大的查询功能。开发人员可以使用LINQ表达式来编写类型安全、直观的查询语句,这使得查询过程更加简洁和直观。
此外,EFCore还具有以下特点:
轻量级和可扩展性:EFCore是一个轻量级的ORM框架,易于集成到项目中。同时,它也具有良好的可扩展性,可以根据项目的需求进行定制和扩展。
支持多种开发环境:EFCore可以在Visual Studio、Visual Studio for Mac或Visual Studio Code等环境下开发,这使得开发人员可以根据自己的喜好和习惯选择适合的开发工具。
(一)创建表结构
主要是三步:
1)创建实体类
2)创建配置类
3)创建dbContext
引用nuget包:
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
第1个包就是EFCore的功能包。
第2个包用于最后执行控制台指令 Update-Database 创建表的时候,如果没有它这个操作就会报错。
源码:
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace ConsoleApp1 { internal class Program { static void Main(string[] args) { Console.WriteLine("Hello, World!"); } } public class Person { public long id { get; set; } public string name { get; set; } public int Age { get; set; } } public class Book { public long Id { get; set; } //主键 public string Title { get; set; } //标题 public DateTime PubTime { get; set; } //发布日期 public double Price { get; set; } //单价 } public class BookEntityConfig:IEntityTypeConfiguration<Book> { public void Configure(EntityTypeBuilder<Book> builder) { builder.ToTable("T_Books"); } } public class PersonEntityConfig : IEntityTypeConfiguration<Person> { public void Configure(EntityTypeBuilder<Person> builder) { builder.ToTable("T_Persons"); } } public class TestDbContext:DbContext { public DbSet<Book> Books { get; set; } public DbSet<Person> Persons { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { string connStr = "Server=.;Database=mytest;Trusted_Connection=True;MultipleActiveResultSets=true;Encrypt=false;"; optionsBuilder.UseSqlServer(connStr); } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly); } } }
“程序包管理器控制台”执行执行Add-Migration init
进行数据表迁移动作。注意init这个相当于git里面的commit的注释字符串,要起有意义的名字。
执行成功后,会自动在你的项目里增加一些代码。
它们用于创建表结构。
“程序包管理器控制台”执行 Update-Database 创建表。
这个过程中,注意你的代码会被编译一次,如果有语法错误的话创建表过程会失败。
这一步可能会报下面的错误:
A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0 - 证书链是由不受信任的颁发机构颁发的。)
解决方法是修改一下数据连接字符串:
注意最后的Encrypt=false 它可以解决问题。
Server=.;Database=mytest;Trusted_Connection=True;MultipleActiveResultSets=true;Encrypt=false;
成功后查看数据库表,可以看到增加了 T_Books和T_Persons。
(二)修改表结构
1。修改实体类,增加属性
2。执行 Add-Migration addBrith
3。 执行Update-Database
观察数据库,已经成功添加了字段。
演示程序环境为:
vs2022+ .net8.0 + SQLServer2012
链接:https://pan.baidu.com/s/1Ihq7gSs4L6o3cYrNXVJTVQ
提取码:2zvw
--来自百度网盘超级会员V6勇哥的分享
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

