Я использую EF6 Code First.
У меня есть библиотека классов «IdentitySecurity», которая содержит контекст «IdentityDBContext», который указывает на базу данных «IdentitySecurity» и IdentityModels.
Затем у меня есть веб-проект, содержащий контекст «ProjectDBContext», который указывает на базу данных «Project» и ProjectModels.
Если я создам модель в ProjectModels следующим образом:
public class Project
{
public int ProjectId { get; set; }
public virtual IdentitySecurity.Models.ApplicationUser UpdateUser { get; set; }
}
Он не может создать миграцию, я думаю, это потому, что он не может установить отношение внешнего ключа к другой базе данных и ожидает, что он будет в базе данных проекта.
Ошибка, которую он получает, когда вы пытаетесь создать новую миграцию, такова:
Во время создания модели были обнаружены одна или несколько ошибок проверки:
Project.Models.IdentityUserLogin: : EntityType 'IdentityUserLogin' не имеет определенного ключа. Определите ключ для этого EntityType. Project.Models.IdentityUserRole: : EntityType 'IdentityUserRole' не имеет определенного ключа. Определите ключ для этого EntityType. IdentityUserLogins: EntityType: EntitySet «IdentityUserLogins» основан на типе «IdentityUserLogin», для которого не определены ключи. IdentityUserRoles: EntityType: EntitySet «IdentityUserRoles» основан на типе «IdentityUserRole», для которого не определены ключи.
Другой пример, с которым я столкнулся, похож на этот: у меня была таблица конфигурации, которую несколько приложений используют в общей области базы данных. Я попытался сослаться на это в такой модели:
общедоступный виртуальный Common.Models.CommonItem CommonItem { get; задавать; }
В этой ситуации он добавил миграцию и обновил базу данных без ошибок, но на самом деле он создал таблицу «CommonItem» в базе данных проекта вместо использования таблицы в общей базе данных.
Есть ли способ настроить EF6 CodeFirst, чтобы я мог иметь таблицы конфигурации или таблицы ASPIdentity в другой базе данных и по-прежнему ссылаться на них как на виртуальные объекты?
Спасибо.