c# – 实体框架种子无效
发布时间:2020-12-15 23:25:14 所属栏目:百科 来源:网络整理
导读:我在我的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"
我在我的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 APplication Start 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. 解决方法
如果您不访问数据库,则永远不会调用初始化程序.如果要在应用程序启动时调用Global.asax中的Initialize方法,请创建数据库:
context.Database.Initialize(true)(); 更新1: 问题是您在不同的数据库实例中设置初始化程序,请尝试以下操作: using (var db = new AppDataContext()) { db.Database.SetInitializer(new AppDataContextInitializer()); db.Database.Initialize(true); } 或者在DbContext构造函数上设置Initializer: public AppDataContext() { Database.SetInitializer(new AppDataContextInitializer()); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |