У меня возникли трудности с получением двух моих контекстов, которые используют одну и ту же базу данных для сотрудничества. Вот сценарий:MVC/Entity Code-First Несколько контекстов с ссылочной целостностью между ними
В приложении MVC с использованием EF 6 Code-First есть одна база данных с двумя контекстами. - Первый контекст - это контекст ApplicationIdentity с настраиваемым объектом ApplicationUser. - Второй контекст является бизнес-контекстом, который держит модель команды:
public class Team
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public ApplicationUser TeamLeader { get; set; }
public string Name { get; set; }
public virtual ICollection<ApplicationUser> TeamMembers { get; set; }
public bool IsActive { get; set; }
}
Управления миграции было трудно, хотя этот ответ оказался чрезвычайно полезным: Multiple DB Contexts in the Same DB and Application in EF 6 and Code First Migrations
Проблема заключается в том, что в контексте идентичности продолжает пытаться создать таблицу Team в своих миграциях, а затем бизнес-контекст продолжает пытаться создавать дубликаты записей ApplicationUser при создании, заполнении и сохранении новой команды.
То, что я хотел бы для следующих правил, которые должны применяться:
- IdentityContext отвечает за создание и изменение Схему только таблиц идентификаторов. Он не знает об объектах (aka Team) за пределами своей области ответственности.
- Бизнес-контекст отвечает за ссылочную целостность между его объектами и IdentityObjects, но может не редактировать записи в таблицах Identity. Если пользователь не существует, ошибка не создается.
Есть ли у кого-нибудь советы о том, как заставить эти контексты играть хорошо друг с другом? Я действительно не хочу нарушать ссылочную целостность между объектами Identity и бизнес-объектами.
@Cola не предполагают Bolding случайных слов, что не улучшает читаемость так или иначе. – CodeCaster