升級Enterprise Library DAAB custom Oracle provider 4.1到5.0

摘要:升級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上沒有設定,

補上後程式成功執行。