摘要:升級Enterprise Library DAAB custom Oracle provider 4.1到5.0
這幾天將專案使用的程式從Enterprise Library 4.1升級到5.0,結果一升級上去程式就掛了,
經過一天的除錯及追蹤,總算把程式修好了。
主要的原因是因為我使用了客製化的data provider,而4.1的做法和5.0的做法並不相同,
因此需要做修改來符合5.0的架構,
Database類別的部分和以前的做法一樣,主要的不同是建構Database實體的機制已經不同,
原本所需的IDatabaseAssembler已經不需要,改成繼承DatabaseData來配合機制,
這邊的難度感覺起來是有點提高,原本IDatabaseAssembler的做法是實作出一個Assemble來回傳Database實體即可,
5.0的DatabaseData則需要實作一個建構子以及覆寫GetRegistrations方法來回傳Database實體,
而且GetRegistrations所回傳的是IEnumerable<TypeRegistration>,需要使用Iterator來解決。
在這過程中倒是對於Unity有些體認,對於這些機制有了一些感覺,
希望未來可以更加地掌握這些東西,
這樣做完後,我還是無法成功解決問題,
追查了很久,發現在config設定上也需要注意一些事,
因為我是使用Oracle原廠提供的ADO.NET元件來整合到Enterprise Library中,
所以我的custom data provider會命名為Oracle.DataAccess.Client,
這樣做讓我查了好久,
後來反覆測試總算發現原因,
custom data provider的名稱必需在DbProviderFactories中存在,
因為我的程式會以64位元執行,而設定是在32位元設定,
所以沒注意到64位元的config上沒有設定,
補上後程式成功執行。