【问题标题】:Entity Framework Core seed dataEntity Framework Core 种子数据
【发布时间】:2018-12-27 13:06:06
【问题描述】:

所以我有一个 Entity Framework Core 第一个数据库和一个 .Net Core 应用程序。

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

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

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

所以我的问题是:除了 HasData 方法之外,还有其他方法可以将种子数据添加到 Entity Framework Core Code First 数据库中

【问题讨论】:

    标签: c# .net-core entity-framework-core


    【解决方案1】:

    是的!有一种方法!你可以这样做:

    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.
    
            }
    
        }
    }
    

    Startup类的Configure方法中的如下:

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

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

    【讨论】:

    • 我没有看到任何地方提到过 ASP.NET Core。
    • 我的意思是问题作者没有在问题的任何地方提到 ASP.NET Core,而您的代码被设计为在 ASP.NET Core 中使用。但可能你猜对了。没关系。
    • 哦!明白了!我已经从他的问题标签中猜到了! :) 谢谢。
    • 我确实在问题中提到了 .Net Core。感谢您的回答!
    • @kjwdamme .NET CoreASP.NET Core 不同。
    【解决方案2】:

    创建一个 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();
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 2016-05-14
      • 1970-01-01
      • 2018-05-07
      • 1970-01-01
      • 2017-01-09
      相关资源
      最近更新 更多