美文网首页
Entity Framework Core 简明教程(1)

Entity Framework Core 简明教程(1)

作者: Stone0823 | 来源:发表于2023-03-20 23:23 被阅读0次

    示例程序基于 .NET 6,在 Visual Studio 2022 中进行程序编写。使用 Console 控制台应用程序。

    创建工程

    新建一个工程,选择工程的类型为 Console App:


    将工程命名为 EFCoreTest:


    点击【下一步】,使用 .NET 6.0 框架,这是一个长期维护的版本。如果已经熟悉顶级语句,可以不选中 Do not use top-level statement 选项。如果习惯了要看到 program.cs 文件中有 Main 方法,则选中:

    完成:


    安装 Entity Framework Core 相关包

    Entity Framework Core 支持不同的数据库,比如 SQL Server, MySQL 等,要求不同的数据库厂商提供数据驱动程序。我们在本例中将使用 SQL Server LocalDB,这是一种基于文件的数据库,是 SQL Server 最精简的版本。安装 Visual Studio 的时候,可以选择同时安装这个精简的数据库。

    通过菜单 Tools -> NuGet Package Manager -> Manage NuGet Packages for Solution 进行可视化安装。


    我们将按装如下两个 Package:

    如果安装成功,这里显示了 Package 和版本:


    定义实体类

    在工程中新建一个 Models 文件夹,添加一个名为 Book 的实体类:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace EFCoreTest.Models
    {
        public class Book
        {
            public int Id { get; set; }
            public string Title { get; set; }
            public string AuthorName { get; set; }
            public DateTime PublishDate { get; set; }
            public double Price { get; set; }
        }
    }
    

    定义实体配置类

    实体配置类的主要作用是设置实体与数据表映射的数据表相关属性。EF Core 按照约定大于配置的原则,提供了大量默认的配置,但如果需要更加个性的设置,则可以在实体配置类中进行。实体配置类需要实现 IEntityTypeConfiguration 接口。


    编写 Configure 方法的代码如下:

    namespace EFCoreTest.Models
    {
        public class BookEntityConfig : IEntityTypeConfiguration<Book>
        {
            public void Configure(EntityTypeBuilder<Book> builder)
            {
                builder.ToTable("T_Books"); // 指定 Book 对应的数据库表为T_Books
    
                builder.Property(c=>c.Title).IsRequired().HasMaxLength(50);
                builder.Property(c=>c.AuthorName).IsRequired().HasMaxLength(20);
            }
        }
    }
    

    上面的代码比较直观,简单来说,对数据库表有如下配置:
    1)数据库表名为 T_Books

    1. Title 字段为必输字段,最大长度为 50
      3)AuthorName 字段为必输字段,最大长度为 20

    定义上下文类

    EF Core 对数据库的操作需要通过继承自 DbContext 的类来进行。DbSet 类代表对应的数据库表。在 Models 文件夹下,创建名为 BookDbContext 的类,继承自 DbContext:


    我们需要 override DbContext 的两个方法,在 OnConfiguring 方法中设置连接字符串,并且根据该连接字符串配置,连接到相应数据库:

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // 连接字符串
        string connStr = "Server=(localdb)\\ProjectModels;Database=BookDb;Trusted_Connection=True";
        optionsBuilder.UseSqlServer(connStr);
    }
    

    这里,连接字符串要有实际存在的数据库与之对应,通过菜单 View -> SQL Server Object Explorer 菜单,可以看到该数据库:


    改写 OnModelCreating 方法:

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        // 加载当前Assemby所有实现了IEntityConfiguration的类
        modelBuilder.ApplyConfigurationsFromAssembly(this.GetType().Assembly);
    }
    

    数据库迁移

    通过菜单 Tools -> NuGet Package Manager -> Package Manager Console 打开命令行界面:


    运行 Add-Migration 命令:


    运行该命令后,在工程中生成数据库迁移的脚本,InitialCreate 是数据迁移的名称,该名称表示这是第一次迁移。此时还没有作用于实际的数据库。

    接下来,运行 Update-Database 命令,生成实际的数据表:


    相关文章

      网友评论

          本文标题:Entity Framework Core 简明教程(1)

          本文链接:https://www.haomeiwen.com/subject/njiprdtx.html