我在使用同一个数据库进行合作的两个上下文时遇到了一些困难。这是场景:
在使用EF 6 Code-First的MVC应用程序中,有一个包含两个上下文的数据库。 - 第一个上下文是具有自定义ApplicationUser对象的ApplicationIdentity上下文。 - 第二个上下文是业务上下文,它包含一个团队模型:
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
问题是Identity上下文一直在尝试在其迁移中创建Team表,然后Business Context在创建,填充和保存新团队时不断尝试创建重复的ApplicationUser记录。
我希望应用以下规则:
有没有人有任何关于如何让这些背景互相玩耍的提示?我真的不想破坏Identity对象和业务对象之间的引用完整性。
答案 0 :(得分:2)
您尝试做的事情看起来像“DDD Bounded Contexts”。
解释如何使用它们有点长,但这里有一些提示:
modelBuilder.Ignore<EntityType>();
从您的模型中排除自动添加到您的上下文中的相关实体modelBuilder
配置它们这是Julie Lerman发表的一篇非常有趣的文章:Data Points - Shrink EF Models with DDD Bounded Contexts