Как я могу сопоставлять таблицы с использованием свободного API в ASP.NET MVC 5, Entity Framework 6?

asp.net-identity asp.net-mvc-5 c# entity-framework entity-framework-6

Вопрос

Я пытаюсь создать отношения один к одному, используя C # в Entity Framework 6, используя ASP.NET MVC 5 со встроенной аутентификацией пользователя.

Я могу создавать таблицы и соединения со значениями по умолчанию, создаваемыми Entity Framework. Но когда я пытаюсь использовать свободный API ... более конкретно, когда я использую для создания модели даже пустую мою миграцию базы данных с помощью консоли диспетчера пакетов, не удастся. Как я могу сопоставить отношения друг с другом?

Моя ошибка:

//error
//my.Models.IdentityUserLogin: : EntityType 'IdentityUserLogin' has no key defined.   //Define the key for this EntityType.
//my.Models.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.

Мой код:

//error
//my.Models.IdentityUserLogin: : EntityType 'IdentityUserLogin' has no key defined.   //Define the key for this EntityType.
//my.Models.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.

Принятый ответ

Ошибки возникают из-за того, что производные идентификационные таблицы имеют отображение в производном контексте. Это нужно вызвать внутри новой функции переопределения OnModelCreating. Для этого просто добавьте base.OnModelCreating (modelBuilder) в свой метод, как показано ниже.

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{   
    base.OnModelCreating(modelBuilder); // <-- This is the important part!
    modelBuilder.Configurations.Add(new EngineeringDesignMap());
    modelBuilder.Configurations.Add(new EngineeringProjectMap());
}

Популярные ответы

Похоже, вам не хватает вызова base.OnModelCreating в вашем DbContext.




Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему