2016-11-18 27 views
1

我正在協助某人在一個短小精悍的相關集成,目前有一個情況下,我們有一些我們需要進入存儲過程的數據。因此,我們可以寫但是我們想要的存儲過程,以及但是我們希望可以寫短小精悍位,但對象將類似於:傳遞一個複雜對象的數組到一個存儲過程與精巧

public class SomeComplexObject 
{ 
    public string Something {get; set;} 
    public string SomethingElse {get;set;} 
} 

這將是一個陣列內的任何地方從1-N金額這些對象。所以我們需要將它們傳遞給一個存儲過程,以供它用作其內部查詢事件的一部分。

所以,如果我做這樣的事情:

new SqlParameter("arrayOfGoodies", arrayOfComplexObjects); 

但是它給我們的錯誤:

No mapping exists from object type

這是有道理的,因爲它怎麼會知道如何將這種陣列波蘇斯的轉換成爲SQL世界的東西,但不知何故,我需要將這些數據存入存儲過程。那麼有沒有辦法做到這一點,或者告訴精靈這種類型,或者可能使用其中一個表值參數的東西或東西?

回答

0

您可以將數組作爲Table Valued Parameter傳遞。不幸的是,你必須先將它轉換成DataTable。

例如:

conn.Execute("My_SP", new { values = myTable.AsTableValuedParameter("MyType") }, 
commandType: CommandType.StoredProcedure); 

一些更多的例子here

相關問題