重庆熊猫 Loading

Entity Framework教程-初始化数据

更新记录
转载请注明出处:
2022年10月24日 发布。
2022年10月22日 从笔记迁移到博客。

初始化数据说明

初始化数据也叫种子数据,用于定义初始化到数据库中的数据

定义初始化数据

在DbContext类型中的ModelCreating方法中进行设置初始化数据

使用HasData方法即可

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<PandaEntity>().HasData(
        new PandaEntity()
        { 
            Id = 666,
            Name = "Panda",
            DateTime = DateTime.Now
        }
    );
}

与DbContext类型分离

将大量的初始化数据写在DbContext类型中不合适,不便于日后的维护

所以定义一个DbContext类型的扩展方法进行创建初始化数据

定义一个ModelBuilderExtensions.cs文件,本质就是扩展方法类

using System;
using Microsoft.EntityFrameworkCore;

namespace ConsoleApp1
{
    public static class ModelBuilderExtensions
    {
        public static void SeedData(this ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<PandaEntity>().HasData(
               new PandaEntity()
               {
                   Id = 888,
                   Name = "Panda666",
                   DateTime = DateTime.Now
               }
           );

            modelBuilder.Entity<PandaEntity>().HasData(
                new PandaEntity()
                {
                    Id = 999,
                    Name = "Dog666",
                    DateTime = DateTime.Now
                }
            );
        }
    }
}

然后在DbContext类中的OnModelCreating方法中调用

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    //生成初始化数据
    modelBuilder.SeedData();
}
posted @ 2022-10-24 09:01  重庆熊猫  阅读(112)  评论(0编辑  收藏  举报