我有一个全新的ASP.NET MVC 5项目,其中一个DbContext
使用Entity Framework 6.1和Identity 2.2.1。尝试使用IoC,我创建了第二个DbContext
和一些属于第二个上下文的类。
这些类中的大多数都具有Identity 2.2.1中IdentityUser
类的外键。我遇到的问题是,当我尝试使用Add-Migrations
时,我收到以下错误:
在模型生成期间检测到一个或多个验证错误:
{MyProjectName} .DataContexts.IdentityUserLogin :: EntityType'IdentityUserLogin'没有定义键。定义此EntityType的密钥。
{MyProjectName} .DataContexts.IdentityUserRole :: EntityType'IdentityUserRole'没有定义键。定义此EntityType的密钥。
IdentityUserLogins:EntityType:EntitySet'IdentityUserLogins'基于没有定义键的类型'IdentityUserLogin'。
IdentityUserRoles:EntityType:EntitySet'IdentityUserRoles'基于类型'IdentityUserRole',没有定义键。
当我将从第二个上下文创建的类移动到初始上下文中时,我没有收到任何错误,并且数据库表按预期构建。
如何保持IoC并使外键限制与EF和CodeFirst一起正常工作?
您可以在https://github.com/RoLYroLLs/MultiDbContextForeignKeySample找到示例项目。要重新创建错误,请在程序包管理器控制台上运行此命令:
Enable-Migrations -MigrationsDirectory "DataContexts\ClientMigrations" -ContextTypeName MultiDbContextForeignKeySample.DataContexts.ClientDbContext