используйте EF4.1 Code First DbContext с 2 строками подключения

возможно ли иметь один DbContext с двумя строками подключения?

это то, что у меня есть:

// this is from Db1
public class Log
{
   public virtual Court Court {get;set;}
   public Guid CourtId {get;set;}
   public DateTime Date{get;set;}
}

// this is from Db2 (different connection string)
public class Court
{
   public Guid Id {get;set;}
   public string Name {get;set;}
}

это выполнимо?


person Omu    schedule 05.05.2011    source источник


Ответы (3)


Если вы хотите иметь две строки подключения к разным базам данных (содержащим разные таблицы), у вас должно быть два разных контекста, содержащих свои собственные сопоставления. Это верно как для API ObjectContext, так и для API DbContext — это предусмотрено дизайном. Единственным поддерживаемым сценарием является наличие двух строк подключения к двум абсолютно одинаковым базам данных на одном и том же типе сервера базы данных (поставщик базы данных). В таком случае вы можете передать строку подключения конструктору контекста при его создании. Даже в этом случае у вас не может быть одного экземпляра контекста, работающего с двумя подключениями к базе данных.

person Ladislav Mrnka    schedule 05.05.2011

Я так не думаю. Ни в коем случае, Хосе. Это просто не имеет смысла.

person hazimdikenli    schedule 05.05.2011

Класс DbContext поддерживает только одно соединение для каждого контекста. Одной из проблем, позволяющих одному DbContext использовать несколько баз данных, будет генерация запросов. В вашем примере какой запрос позволит мне получить список всех журналов, учитывая, что объект суда находится в другой базе данных?

person Andy Wilson    schedule 05.05.2011
comment
ну, для чего-то вроде logs.Select(o => new{o.Court.Name, o.Date}) это будет один запрос в первой БД, запрашивающий журналы, и один во второй, запрашивающий суды, и чем бы они были связаны в памяти по CourtId (я так себе это представлял) - person Omu; 05.05.2011