Ole*_* Sh 3 c# entity-framework seed entity-framework-core ef-core-2.0
我使用 EF Core 并想添加预定义的数据。可以通过以下代码完成:
modelBuilder.Entity<UserPage>().HasData(new UserPage()
{
Name = "Homepage",
Editable = true,
Path = "path"
});
Run Code Online (Sandbox Code Playgroud)
这部分代码验证具有确切数据的 UserPage 对象是否存在,如果不存在,则创建它但我只想在记录Name = "Homepage"不存在时添加新记录,否则不存在。即使名称为“主页”的记录已经存在,上面的代码也会添加新记录,但Editable = false例如。我想验证它,我尝试:
if (UserPages.Where(p => p.Name.Equals("Homepage", StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault() == null)
{
modelBuilder.Entity<UserPage>().HasData(new UserPage()
{
Name = "Homepage",
Editable = true,
Path = "path"
});
}
Run Code Online (Sandbox Code Playgroud)
但我收到一个错误:
在创建模型时尝试使用该模型。DbContext 实例不能以任何使用正在创建的模型的方式在 OnModelCreating 中使用。
这超出了“数据库播种”的范围。当您在创建/更新数据库时指定数据时,播种“确保”数据存在,并且将在“迁移时间”完成,当您可能根本没有配置数据库时(在代码执行时,您正在为 EF 定义模型:您甚至可能没有现成的真实数据库来查询数据:这就是您看到的错误)。
如果您所追求的是处理数据库本身的一些逻辑,而不是在“数据库设计时”,那么不要在模型创建时执行此操作,并在您的应用程序启动时(或在任何其他时间点)运行该逻辑),在数据库创建和播种之后。
| 归档时间: |
|
| 查看次数: |
2206 次 |
| 最近记录: |