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?
看來舊版本還在GAC中。 –
這是否意味着即使在項目本身中引用了較新的版本,實體框架也會首先在GAC中查找DLL?對我來說似乎很陌生... – user685428
不,但可能會在項目(程序集)中對您執行強制轉換的新版本進行引用,而包含EF類型的程序集是使用較舊的(GAC)版本構建的。假設它們是獨立的程序集。 –