Entity Framework Core基础
Entity Framework Core基础
1 什么是ORM? 有什么用?EF Core是什么?
ORM(object relational mapping,对象关系映射),其中 “对象”指的是C#中的对象,“关系”指的是关系数据库,“映射”指的是在关系数据库和C#对象之间搭建一座”桥梁“。ORM可以通过C#对象的方式操作数据库。ORM只是对ADO.NET 的封装,ORM底层仍然是通过ADO.NET访问数据库的。
EF Core是微软官方提供的ORM框架,能够操控多种不同类型的数据库。开发效率高
2 为什么EF Core被称为“模型驱动开发” ?
因为使用EF Core,开发人员可以从实体类的定义中自动生成数据库表。开发人员专注于实体类模型的创建,而创建数据库表这样的事情交给EF Core完成。这种先创建实体类再生成数据库表的开发模式叫“模型驱动开发”,区别与先创建表后创建实体类的“数据驱动开发”。
EF Core这种根据实体类生成数据库表的操作叫作“迁移”(migration)。
3 EF Core创建表
示例:
1、创建Book类
public class Book
{
public long Id { get; set; }// 主键
public string Title { get; set; }// 书名
public DateTime PubTime { get; set; }// 发布日期
public double Price { get; set; }// 价格
public string AuthorName { get; set; }// 作者名字
}
2、安装NuGet包 Microsoft.EntityFrameworkCore.SqlServer
3、创建一个实现了IEntityTypeConfiguration<>接口的实体类的配置类BookEntityConfig
public class BookEntityConfig : IEntityTypeConfiguration<Book>
{
public void Configure(EntityTypeBuilder<Book> builder)
{
builder.ToTable("T_Books");// 对应数据库的表名
builder.Property(x => x.Title).HasMaxLength(50).IsRequired();// 设置一些限制。。。
builder.Property(x => x.AuthorName).HasMaxLength(20).IsRequired();
}
}
4、创建一个继承DbContext的类TestDbContext
public class TestDbContext : DbContext
{
public DbSet<Book> Books { get; set; }// Books对应T_Books表
/// <summary>
/// 数据库连接配置
/// </summary>
/// <param name="optionsBuilder"></param>
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
string connStr = "Server=.;Database=EFCoreDemo;Trusted_Connection=True";
optionsBuilder.UseSqlServer(connStr);
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// 加载当前程序集中所有实现了IEntityTypeConfiguration接口的类
modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
}
5、安装NuGet包 Microsoft.EntityFrameworkCore.Tools
6、在【程序包管理器控制台】中执行Add-Migration InitialCreate,之后项目就会生成Migration文件夹下的cs代码。这时候代码还没被执行
7、需要在【程序包管理器控制台】中执行Update-database,这样才会应用到数据库。
8、查看SQL Server数据库,可以发现T_Books表创建成功,且与实体类中的配置一致。
9、对数据库数据增删改查操作的话就对Books对象操作【配合LINQ语句】
遇到的问题(证书链是由不受信任的颁发机构颁发的): https://www.cnblogs.com/dawenyang/p/12985957.html