C# 实体框架核心种子数据

C# 实体框架核心种子数据,c#,.net-core,entity-framework-core,C#,.net Core,Entity Framework Core,所以我有一个实体框架核心优先数据库和一个.Net核心应用程序 我想在创建数据库时向其中添加种子数据。我知道FluentAPI有HasData方法,但这不是我想要的 当数据库被创建时,我想创建一个具有随机生成的密码(每次都不同)的用户,该密码将保存在服务器中的文件中 我不能使用HasData方法,因为它每次都会创建相同的密码 所以我的问题是:除了HasData方法之外,还有没有其他方法可以将种子数据添加到实体框架核心代码优先数据库中!有办法!您可以执行以下操作: public static cla

所以我有一个实体框架核心优先数据库和一个.Net核心应用程序

我想在创建数据库时向其中添加种子数据。我知道FluentAPI有HasData方法,但这不是我想要的

当数据库被创建时,我想创建一个具有随机生成的密码(每次都不同)的用户,该密码将保存在服务器中的文件中

我不能使用HasData方法,因为它每次都会创建相同的密码


所以我的问题是:除了HasData方法之外,还有没有其他方法可以将种子数据添加到实体框架核心代码优先数据库中!有办法!您可以执行以下操作:

public static class DatabaseInitializer
{
    public static void Initialize(YourDbContext dbContext)
    {
        dbContext.Database.EnsureCreated();
        if (!dbContext.Users.Any())
        {
            // Write you necessary to code here to insert the User to database and save the the information to file.

        }

    }
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, YourDbContext dbContext)
{
   // other configurations
   ..............

   DatabaseInitializer.Initialize(dbContext);

   ..............
   // other configurations
}
启动
类的
配置
方法中,如下所示:

public static class DatabaseInitializer
{
    public static void Initialize(YourDbContext dbContext)
    {
        dbContext.Database.EnsureCreated();
        if (!dbContext.Users.Any())
        {
            // Write you necessary to code here to insert the User to database and save the the information to file.

        }

    }
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, YourDbContext dbContext)
{
   // other configurations
   ..............

   DatabaseInitializer.Initialize(dbContext);

   ..............
   // other configurations
}

Initialize
方法在应用程序启动期间只调用一次。

创建一个DataSeeder类并在其中注入DbContext。 编写一个seedData方法以插入所需的数据。这将是自定义逻辑

您可以在创建数据库后运行此代码

public class DataSeeder
{
    public static void SeedRandomPassword(YourDbContext context)
    {
            //// your custom logic to generate random password 
            //// set it to right user


            context.Users.Add();  // Or Update depending on what you need
            context.SaveChanges();
        }
    }
}

我没有看到任何地方提到ASP.NET Core。我的观点是,当您的代码设计用于ASP.NET Core时,问题作者在问题的任何地方都没有提到ASP.NET Core。但也许你猜对了。没关系,哦!理解!我从他的问号上猜到了!:)谢谢。我在问题中确实提到了.Net核心。谢谢你的回答@kjwdamme.NET核心与ASP.NET核心不同。