C# EF代码优先,种子设定和部署
我想在安装时为我们的初始数据库添加用户种子(对于ASP.NET web应用程序)。由于某种原因,它不能正常工作。我读了大量的主题,主要是说运行C# EF代码优先,种子设定和部署,c#,asp.net,entity-framework,ef-code-first,C#,Asp.net,Entity Framework,Ef Code First,我想在安装时为我们的初始数据库添加用户种子(对于ASP.NET web应用程序)。由于某种原因,它不能正常工作。我读了大量的主题,主要是说运行更新数据库,这在控制台上非常有效,但是在生产环境中如何工作呢 为了避免这种情况,我最终得到了以下代码——我在这里遗漏了什么 Global.asax.cs::Application\u Start() EntitiesContextInitializer internal sealed class EntitiesContextInitializer : M
更新数据库,这在控制台上非常有效,但是在生产环境中如何工作呢
为了避免这种情况,我最终得到了以下代码——我在这里遗漏了什么
Global.asax.cs::Application\u Start()
EntitiesContextInitializer
internal sealed class EntitiesContextInitializer : MigrateDatabaseToLatestVersion<EMUI.Models.UsersContext, Configuration>
{
}
内部密封类EntitiesContextInitializer:MigrateDatabaseToLatestVersion
{
}
配置
internal sealed class Configuration : DbMigrationsConfiguration<EMUI.Models.UsersContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(EM.Models.UsersContext context)
{
if (!WebSecurity.Initialized)
{
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
}
if (!Roles.RoleExists("Administrator"))
{
Roles.CreateRole("Administrator");
}
// More similar seeding
}
}
内部密封类配置:dbmigtorinsconfiguration
{
公共配置()
{
AutomaticMiggerationsEnabled=真;
}
受保护的覆盖无效种子(EM.Models.UsersContext上下文)
{
如果(!WebSecurity.Initialized)
{
WebSecurity.InitializeDatabaseConnection(“DefaultConnection”、“UserProfile”、“UserId”、“UserName”,autoCreateTables:true);
}
如果(!Roles.RoleExists(“管理员”))
{
角色。创建角色(“管理员”);
}
//更相似的播种
}
}
您必须执行以下步骤才能使其正常工作:
1) 将您的配置类设置为公共类,而不是内部类(迁移配置)
2) 将此代码粘贴到您的应用程序\u global.asax的开头:
// Now initialize it
using (var context = new EMUI.Models.UsersContext())
{
if (!context.Database.Exists())
{
Configuration configuration = new Configuration();
configuration.ContextType = typeof(EMUI.Models.UsersContext);
var migrator = new DbMigrator(configuration);
migrator.Update();
}
}
希望能有帮助
// Now initialize it
using (var context = new EMUI.Models.UsersContext())
{
if (!context.Database.Exists())
{
Configuration configuration = new Configuration();
configuration.ContextType = typeof(EMUI.Models.UsersContext);
var migrator = new DbMigrator(configuration);
migrator.Update();
}
}