gpt4 book ai didi

entity-framework-core - EntityFrameworkCore : How to initialize a Database and seed it the first time user uses an application

转载 作者:行者123 更新时间:2023-12-04 02:09:37 25 4
gpt4 key购买 nike

我已经使用 Microsoft Visual Studio 2015 和 EntityFrameworkCore 构建了一个项目。

我手动生成了一些虚拟数据,并且正在开发我的解决方案。现在,我想在服务器中部署它,但是我遇到了第一次启动应用程序时出现的问题,因为它没有找到数据库和数据。

我在谷歌上搜索并使用 找到了适用于 Visual Studio 2013 和以前版本的解决方案。 CreateDatabaseIfNotExists 需要包的类: System.Data.Entity
( http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx ) 但是,EntityFrameworkCore 中不存在此类类和包。

如果用户第一次在 EntityFrameworkCore 中使用我的应用程序,我如何创建和填充至少有一行的数据库?

或等效于 System.Data.Entity 在 Entity Framework 核心?

最佳答案

罗文·米勒 says那个ApplyMigrations足以创建数据库(如果不存在)并应用所有(必要的)迁移。

像这样创建方法:

public void CreateDbAndSampleData(IServiceProvider applicationServices)
{
using (var serviceScope = applicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
{
using (var db = serviceProvider.GetService<ApplicationDbContext>())
{
// This will [try to] create database
// and apply all necessary migrations
db.Database.AsRelational().ApplyMigrations();

// then you can check for existing data and modify something
var admin = db.Users.Where(x => x.Name == "Superadmin").FirstOrDefault();
if (admin == null)
{
db.Users.Add(new User {...});
db.SaveChanges();
}
}
}
}

并从您的 Startup.cs 调用它, 结尾 Configure方法:
CreateDbAndSampleData(app.ApplicationServices);

此代码将在每次应用程序启动时运行,因此您需要准确并且不要覆盖任何非关键数据更改(例如更改用户的评论等)

您可以使用 MusicStore应用程序示例: Startup.csSampleData.cs

关于entity-framework-core - EntityFrameworkCore : How to initialize a Database and seed it the first time user uses an application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40549735/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com