Совместное использование между двумя DbContexts - PullRequest
0 голосов
/ 19 октября 2011

Скажем, у меня есть два 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; }
}

Теперь я пытаюсь вставить новую собаку.

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();

Теперь я получаю две таблицы в NextDb, одну для собак и одну для пород. Я надеялся, что EF выяснит, что порода действительно принадлежит MainDb, поскольку она объявлена ​​в MainUnitOfWork. Ну, как мне согнуть EF, чтобы сделать то, что я хочу?

Ответы [ 2 ]

0 голосов
/ 22 октября 2011

Даже если EF найдет способ сделать это, было бы невозможно представить это в реляционной базе данных, потому что нет способа определить внешний ключ для таблицы в другой базе данных.По крайней мере, не на основных серверах реляционных баз данных.

Таблице Dog необходим внешний ключ для Breed для представления отношения «многие к одному».

0 голосов
/ 19 октября 2011

EF не волшебство.Он не устанавливает никакой связи между классами NextUnitOfWork и MainUnitOfWork.И все равно их нельзя смешивать.

...