Entity framework 4 在两个DBContext之间共享

Entity framework 4 在两个DBContext之间共享,entity-framework-4,ef-code-first,Entity Framework 4,Ef Code First,假设我有两个DbContext,一个包含品种,一个包含狗 public class Dog { public Breed Breed { get; set; } public Guid Id { get; set; } public string Name { get; set; } } public class Breed { public Guid Id { get; set; } public string Name { get; set; } }

假设我有两个DbContext,一个包含品种,一个包含狗

public class Dog {
    public Breed Breed { get; set; }
    public Guid Id { get; set; }
    public string Name { get; set; }
}

public class Breed {
    public Guid Id { get; set; }
    public string Name { get; set; }
}

public class MainUnitOfWork : DbContext
{
    public MainUnitOfWork(): base("MainDb") { }
    public IDbSet<Breed> Breeds { get; set; }
}

public class NextUnitOfWork : DbContext
{
    public NextUnitOfWork() : base("NextDb") { }
    public IDbSet<Dog> Dogs { get; set; }
}

现在我在NextDb有两张桌子,一张给狗,一张给品种。我希望EF会发现这个品种真的属于MainDb,因为它是在MainUnitOfWork中声明的。那么,我如何继续弯曲EF来做我想做的事情呢?

EF不是魔法。它不会在
NextUnitOfWork
MainUnitOfWork
类之间建立任何关系。无论如何,您不能将它们混合使用。

即使EF会找到一种方法来实现,也不可能在关系数据库中表示,因为无法为另一个数据库中的表定义外键。至少在主流关系数据库服务器中不是这样

狗表需要一个外键来表示多对一关系

var next = new NextUnitOfWork();

var dog = new Dog
    { Id = Guid.NewGuid(), Name = "Fido", 
      Breed = new Breed { Id = Guid.NewGuid(), Name = "Rotweiler" } };

next.Dogs.Add(dog);
next.SaveChanges();