gpt4 book ai didi

c# - Entity Framework 种子不工作

转载 作者:行者123 更新时间:2023-11-30 14:09:14 25 4
gpt4 key购买 nike

我的 web.config 上有这个。

<add name="AppDataContext" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\AppDatabase.mdf;Initial Catalog=AppDatabase;Integrated Security=True" providerName="System.Data.SqlClient" />

Global.asax 应用程序开始

 Database.SetInitializer<AppDataContext>(new AppDataContextInitializer());

AppDataContextInitializer.cs

public class AppDataContextInitializer : System.Data.Entity.CreateDatabaseIfNotExists<AppDataContext>
{
protected override void Seed(AppDataContext context)
{
#region Seed Modules
context.ModuleList.Add(new Module() { Id = 1, ModuleName = "Contabilidad", FontAwesomeClass = "ambulance" });
context.ModuleList.Add(new Module() { Id = 2, ModuleName = "Recursos Humanos", FontAwesomeClass = "heartbeat" });
context.ModuleList.Add(new Module() { Id = 3, ModuleName = "Inventario", FontAwesomeClass = "medkit" });
#endregion


base.Seed(context);
}
}

AppDataContext.cs

public class AppDataContext : DbContext
{

public AppDataContext(): base("AppDataContext")
{
}

public DbSet<Module> ModuleList { get; set; }

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}

和 module.cs

 public class Module
{
[Key]
public int Id { get; set; }
public string ModuleName { get; set; }
public string FontAwesomeClass { get; set; }
}

但是我的数据库没有创建,我错过了什么?

更新 1,我在 global.asax 上添加了这个

 AppInitializacionHandler.Initialize();

我创建了这个类:

public class AppInitializacionHandler
{
public static void Initialize()
{
Database.SetInitializer(new AppDataContextInitializer()); //if u want to use your initializer
using (var db = new AppDataContext())
{
db.Database.Initialize(true);
}
}
}

初始化种子和以前一样

数据库已创建但未添加 ROWS。

最佳答案

如果您不访问数据库,则永远不会调用 Initializer。如果您想在应用程序启动时创建数据库,请调用 Global.asax 中的 Initialize 方法:

context.Database.Initialize(true)();

更新 1:

问题是您在不同的 Database 实例中设置 Initializer,试试这个:

using (var db = new AppDataContext())
{
db.Database.SetInitializer(new AppDataContextInitializer());
db.Database.Initialize(true);
}

或者在 DbContext 构造函数上设置 Initializer:

 public AppDataContext()
{
Database.SetInitializer(new AppDataContextInitializer());
}

关于c# - Entity Framework 种子不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30485649/

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