2013-05-17 3 views
0

Я создал два файла edmx и должен иметь контексты.Использование двух контекстов объекта?

Есть проблема с делать что-то вроде:

public DataManager 
{ 
    protected ObjectContext _context; 

    public DataManager(ObjectContext context) 
    { 
    _context = context; 
    } 
} 

или лучше иметь перегруженные construtor:

public DataManager 
{ 
    protected db1entities _context; 
    protected db2entities _context2; 

    public DataManager(db2entities context) 
    { 
    _context = context; 
    } 

    public DataManager(db2entities context) 
    { 
    _context2 = context; 
    } 
} 

Я заметил, если я делаю это первый путь, то контекст не знает о моих сущностях, где он это делает, если я явно укажу контекст

ответ

2

Я не совсем уверен, чего вы пытаетесь выполнить, но вы также можете сделать это, используя ge nerics (http://msdn.microsoft.com/en-us/library/512aeb7t(v=vs.110).aspx). Что-то вроде ...

public class DataManager<T> where T:ObjectContext 
{ 
    protected T _context; 

    public DataManager(T context) 
    { 
    _context = context; 
    } 
} 

Тогда ...

DataManager<db1Entities> DataManager1; 
DataManager<db2Entities> DataManager2; 
+0

Я считаю, что это он. Я проверю это, но в основном я просто пытаюсь передать другой контекст в зависимости от того, с какими данными я хочу работать. Не могли бы вы оказать мне услугу и объяснить, что означает T? – Xaisoft

+0

Это общий класс. T обозначает используемый тип. В этом случае он указывает, что T должен быть типа ObjectContext или классов, которые наследуют его. – bcr

+0

Как и в случае с bcr, T является своего рода заполнителем для типа, который вы указываете при создании класса. Выражение T: ObjectContext ограничивает типы, которые вы можете использовать с этим классом, типам типа ObjectContext дочернего элемента этого класса. В принципе, это просто мешает вам использовать совершенно неприемлемый тип данных с этим классом. – NYSystemsAnalyst

Смежные вопросы