![](/img/trans.png)
[英]Oracle Data Provider (ODP.NET) using Microsoft Enterprise Library 6.0?
[英]ODP.NET in Microsoft Enterprise Library 6.0
關於此問題有兩個問題,但是沒有一個真正的答案。
基本上-當前是否正在使用針對enlib(6.0)的ODP.NET實現? 還是我必須沿着為ODP.NET編寫映射/自定義DAO的路線走下去?
通用數據庫只能解決我的問題,它與Oracle存儲過程不兼容(可怕的“使用GenericDatabase的連接不支持參數發現。必須顯式指定參數,或將連接配置為使用從數據庫派生的類型,支持參數發現錯誤)
我知道entlibcontrib項目-但這似乎被擱置了,因為自2011 / entlib 5.0以來沒有新的實現。
任何有關entlib的自定義DAO開發的指針或建議,將不勝感激。
這是我們對此的官方立場:
如果使用的是Oracle數據庫,則可以使用Enterprise Library附帶的Oracle提供程序和ADO.NET Oracle提供程序,這需要您引用或添加程序集System.Data.OracleClient.dll 。 但是,請記住,在.NET Framework 4.0版中不建議使用OracleClient提供程序,在企業庫6中不建議使用該提供程序。盡管對於將來的開發,企業庫6中仍包含對OracleClient提供程序的支持。應該考慮選擇使用不同Oracle驅動程序的Database類的不同實現。
我還沒有遇到過針對EntLib6的ODP.NET實現。 如果確實要更新EntLibContrib v5.0上可用的版本,請將其發布到contrib站點上,以使其他人受益。 應該相當簡單,在v6中對DAAB沒有重大更改。
我希望我能為您提供一個更好的答案,但是最終歸結為發布故事的優先次序,而這對於我的團隊來說還不夠高。
我們已經使用ODP.NET和企業庫中的GenericDatabase對象成功連接到Oracle 11g。
我們在Oracle軟件包中運行存儲過程時遇到了一個問題(忘記確切的錯誤是什么,但是在實際使用該命令之前就已經拋棄了一些問題),並且我們對企業庫進行了一些小的改動來處理它。
在SprocAccessor.cs中,我們修改了
public override IEnumerable<TResult> Execute(params object[] parameterValues)
看起來像這樣
public override IEnumerable<TResult> Execute(params object[] parameterValues)
{
using (DbCommand command = Database.GetStoredProcCommand(procedureName))
{
parameterMapper.AssignParameters(command, parameterValues);
//return base.Execute(command); Removed
//foreach added by ngpojne. This allows the command to be used before it is disposed of.
foreach (TResult result in base.Execute(command))
{
yield return result;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.