0

我建立一個像這樣的對象上下文:DLL做什麼提供商的EntityConnection使用來創建其StoreConnection

public MyObjectContext(....) : this(contextName, new EntityConnection(connectionString)) 

連接字符串是一個連接字符串到Oracle數據庫。我使用DevArt作爲提供商btw。

,一切工作正常。我可以用它來檢索實體等。

但是後來我想對底層連接做些事情。我不喜歡的東西:

(OracleConnection)((EntityConnection)context.Connection.StoreConnection) 

使我有以下異常:

SystemInvalidCastException: [A]Devart.Data.Oracle.OracleConnection cannot be converted to [B]Devart.Data.Oracle.OracleConnection. .... Type A is from C:\Windows\....\6.60.283\.... Type B is from C:\DevDirectory\...\7.2.104.0 

看來,ObjectContext的使用舊版本的DLL。但是,如果我檢查我的項目的參考,我會看到對正確版本7.2.104.0的引用。當我進一步檢查時,即使我的子類中沒有任何參考,ObjectContext仍然可以連接。

它如何解決它用於連接的DLL?

+0

看來舊版本還在GAC中。 –

+0

這是否意味着即使在項目本身中引用了較新的版本,實體框架也會首先在GAC中查找DLL?對我來說似乎很陌生... – user685428

+0

不,但可能會在項目(程序集)中對您執行強制轉換的新版本進行引用,而包含EF類型的程序集是使用較舊的(GAC)版本構建的。假設它們是獨立的程序集。 –

回答

0

是的,我剛剛意識到,我仍然有錯誤的版本(6)devArt安裝(全球),但在項目中引用正確的版本(7)。包含ObjectContext的程序集沒有參考,因此它需要從舊的GAC中獲取版本(6)。

Thx。澄清。

相關問題