Entity framework 6 实体框架集合初始值设定项和种子数据
很难弄清楚为什么我的数据库无法种子: 以下是我的Global.asax代码:Entity framework 6 实体框架集合初始值设定项和种子数据,entity-framework-6,Entity Framework 6,很难弄清楚为什么我的数据库无法种子: 以下是我的Global.asax代码: protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.F
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
Database.SetInitializer(new DataContextInitializer());
DataContext db = new DataContext();
db.Database.Initialize(true);
WebSecurity.InitializeDatabaseConnection("DataContext", "UserModels", "Id", "UserName", autoCreateTables: true);
}
这是DataContextInitializer:
public class DataContextInitializer : CreateDatabaseIfNotExists<DataContext>
{
protected override void Seed(DataContext context)
{
if (!WebSecurity.Initialized)
{
WebSecurity.InitializeDatabaseConnection("DataContext", "UserModels", "Id", "UserName", autoCreateTables: true);
WebSecurity.CreateUserAndAccount("admin", "12345");
}
var roles = (SimpleRoleProvider)Roles.Provider;
var membership = (SimpleMembershipProvider)Membership.Provider;
if (!roles.RoleExists("admin"))
{
roles.CreateRole("admin");
}
if (membership.GetUser("admin", false) == null)
{
membership.CreateUserAndAccount("admin", "12345");
}
if (!roles.GetRolesForUser("admin").Contains("admin"))
{
roles.AddUsersToRoles(new[] { "admin" }, new[] { "admin" });
}
}
}
公共类DataContextInitializer:CreateDatabaseIfNotExists
{
受保护的覆盖无效种子(DataContext上下文)
{
如果(!WebSecurity.Initialized)
{
WebSecurity.InitializeDatabaseConnection(“DataContext”、“UserModels”、“Id”、“UserName”、autoCreateTables:true);
CreateUserAndAccount(“admin”,“12345”);
}
var roles=(SimpleRoleProvider)roles.Provider;
var membership=(SimpleMembershipProvider)membership.Provider;
如果(!roles.RoleExists(“admin”))
{
角色。创建角色(“管理员”);
}
if(membership.GetUser(“admin”,false)==null)
{
成员资格。CreateUserAndAccount(“管理员”、“12345”);
}
如果(!roles.GetRolesForUser(“admin”)包含(“admin”))
{
roles.AddUsersToRoles(新[]{“admin”},新[]{“admin”});
}
}
}
调试时,我得到的SqlException是“数据库中已经有一个名为…的对象”。知道为什么会发生这种情况吗?以下是我采取的步骤:
- 已将种子逻辑复制到Migrations Configuration.cs文件
- 已从项目中排除旧迁移
- 在包控制台管理器中,执行了添加迁移并为其命名
- 然后在确保WebMatrix.WebData引用属性具有“CopyLocal=true”后运行update database-verbose-force