2012-04-30 66 views
0

由於我們在可預見的將來與存儲過程結婚,因此我正在使用數據訪問應用程序塊5.0進行評估。我喜歡這個包含的簡單性和Mapper,但是讓我感到厭煩的是似乎沒有辦法指定一個參數數組,或者甚至更好的某種「按示例查詢」對象,到存儲過程調用,它將根據您的條件自動創建參數。設想一個搜索客戶功能,您可以在其中指定一個或多個需要搜索的屬性(讓我們假設我們有一個已存儲的proc已經創建了可爲空的字段)。Microsoft Enterprise Library 5.0數據訪問 - 是否可以執行「按示例查詢」功能?

我希望做的是這樣的:

var customerQuery = new { FirstName = "John", LastName = "Doe" } 
var result = db.ExecuteSprocAccessor("SearchCustomers", customerQuery); 

,並有匿名對象變成各種SqlParameter對象。

是這樣的可能嗎?我在MSDN上看到的例子似乎只是顯示指定個人參數,手工,沒有任何想法哪個參數是哪個。

回答

0

企業庫數據訪問應用程序塊支持各種映射器:輸出映射器,結果集映射器和Parameter Mappers。參數映射器是你在這種情況下感興趣的。如果您使用SqlDatabase或OracleDatabase,則支持默認參數映射機制。默認的映射是簡單的並且基於參數的位置,但是如果需要你可以創建你自己的映射器。

考慮一個存儲過程,需要2個int參數,然後一個代碼片段看起來像:

var logs = db.ExecuteSprocAccessor<Log>("usp_getLogs", 
       new object[] { 1, -1 } // parameters as array 
      ).ToList(); 

你可以建立一些輔助的方法來創建合適的對象數組。

相關問題