EF 6 Code First Таблицы ASPIdentity в отдельной базе данных

Я использую 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 в другой базе данных и по-прежнему ссылаться на них как на виртуальные объекты?

Спасибо.


person clee    schedule 03.11.2014    source источник


Ответы (1)


Я боюсь, что для ссылок на внешние ключи вам придется переместить все в одну БД и иметь ProjectDbContext для наследования от IdentityDbContext.

Sql Server не поддерживает внешние ключи между базами данных.

person trailmax    schedule 03.11.2014