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

posted @ 2023-08-15 15:53  不爱菠萝的菠萝君  阅读(136)  评论(0编辑  收藏  举报