2013-05-17 29 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來做到這一點神經(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

相關問題