2014-09-18 38 views
0

我正在學習POCO,雖然我喜歡很多概念,但我認爲我並不完全瞭解它。Peta poco列緩存問題

我有如下所示的問題:

我有一個存儲過程返回多個列和值對這些列其動態構建基於某些條件的存儲過程的內部。

例如基於輸入,下面的結果應該返回之一,

1)

Id -- Name -- Age 
    1  Peter 25 
    2  Janit 53 

2)

Id -- Provider Name -- Provider Type 
5  C. A    hospital   

我不能對這些動態列創建類,因此我使用動態對象和POCO數據庫獲取記錄。當別人撥打不同參數的函數,則導致保持柱信息POCO的第一個電話,並導致了一個願望發生

List<dynamic> list = db.fetch<dynamic>(sql); 

問題。

Id -- Name -- Age 
    5  C. A  hospital   

這種差異導致運行時錯誤。

你能幫我解決這個問題嗎? 或者我該如何爲這種場景定義類?

希望我詳細解釋了我的問題。

回答

0

您可以定義一個POCO類來獲取結果。我用了很多。 PetaPoco將只填寫SP返回的字段。

+0

感謝您的信息。你能否給我提供一個相同的例子。 實際上,當我爲我的對象創建POCO類時,它不支持其他結果集,因爲SPROC返回動態列。有時用不同的名字和不同的數字。這就是爲什麼我使用列表對象來獲取數據。但這裏的問題是第一次獲取內存中的列信息。 – user1182370 2014-09-19 05:28:25

0

與你期望從動態SP在這樣的方式返回的所有列創建POCO如下:

public class PocoName  
{ 
    public int Id {get; set;} 
    public string Name {get; set;} 
    public int Age {get; set;} 
    public string ProviderName {get; set;} 
    public string ProviderType {get; set;} 
    ... 
} 

然後調用函數如下:

List<PocoName> list = db.fetch<PocoName>(sql); 

每次運行具有不同輸入參數的sproc,只有sproc返回的列將填充到POCO中。

+0

這個結構還有一些挑戰。 1)我有大約60列以上的7種不同的SPROCs。 2)像「Provider
Type」這樣的列名很少,現有配置只能以這種方式將列顯示到網格中。 那我該如何處理呢?還有其他動態的方法嗎? – user1182370 2014-09-21 08:02:26