我的代码中有两个dbcontexts:
第一个(AppIdentityDbContext)是您在创建WebApi应用程序时获得的vanilla dbcontext,并指示您需要本地身份验证。它创建表AspNetUsers,AspNetRoles等。默认情况下,这个上下文名为ApplicationDbContext,但我重命名了它。
第二个dbcontext(AppDataDbContext)是我打算用来处理应用程序数据的上下文(除了AspNet.Identity数据之外的所有内容)。
这些db上下文中的每一个都指向两个不同的数据库文件(现在是LocalDb)
我的Global.asax文件如下所示:
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
// initialize user database
Database.SetInitializer(new InitializeAppIdentityDbContext());
AppIdentityDbContext identityContext = new AppIdentityDbContext();
identityContext.Database.Initialize(true);
// initialize data domain database with sample data
Database.SetInitializer(new InitializeAppDataDbContext());
AppDataDbContext dataContext = new AppDataDbContext();
dataContext.Database.Initialize(true);
}
InitializeAppIdentityDbContext种子/创建 - 通过使用UserManager,几个ApplicationUser实例。这些用户在AspNetUsers表中填充。
同样地,我正在尝试种子AppDataDbContext,并在那里有代码来做。
问题是,当下面的行尝试执行时,我得到一个错误,这是最后一行:
dataContext.Database.Initialize(true);
错误说:
Server Error in '/' Application.
One or more validation errors were detected during model generation:
SampleApi.DataAccess.IdentityUserLogin: : EntityType 'IdentityUserLogin' has no key defined. Define the key for this EntityType.
SampleApi.DataAccess.IdentityUserRole: : EntityType 'IdentityUserRole' has no key defined. Define the key for this EntityType.
IdentityUserLogins: EntityType: EntitySet 'IdentityUserLogins' is based on type 'IdentityUserLogin' that has no keys defined.
IdentityUserRoles: EntityType: EntitySet 'IdentityUserRoles' is based on type 'IdentityUserRole' that has no keys defined.
这对我来说很困惑,因为第二个db上下文(AppDataDbContext)没有任何模型可以引用任何提到的AspNetIdentity内容(IdentityUserRole,IdentityUserLogins等)。那里的模型有我自己的应用程序类。
无论如何,我确信我违反了一些关于如何初始化这两个dbcontex的内容,但不知道实现它的正确方法是什么。所以,如果你在这里,感谢你对我的支持并阅读我的信息。我应该尝试什么想法?
非常感谢,
-Alex