2015-06-09 70 views
3

例如輸出結果你有標題的存儲過程:sp_test當你拖動 到LinqToSql,它產生sp_testResult類存儲過程輸出列作爲其屬性。LinqToSql如何生成存儲過程

我想知道LinqToSql區分存儲過程的輸出結果嗎?

+1

它在SQL服務器上運行一個查詢,它會給你所有你需要的信息。 – leppie

+0

你確定你得到了你需要的所有信息!?在sql server中沒有關於'stored procedure'輸出列名的任何信息。你可以使用'INFORMATION_SCHEMA'來獲取它們,但它只能提供有關'表'和'用戶定義函數'的信息。 –

+0

啊,我明白你的意思了。它通過.NET工作的方式是通過'SqlCommand'執行SP時使用'CommandBehavior.SchemaOnly'。空的結果集有足夠的信息來描述輸出列和類型。 – leppie

回答

3

以下是SqlCommandBuilder.GetSchemaTable(...)發生的情況,很遺憾protected

SqlCommand command; // setup as SP 

using (SqlDataReader reader = command.ExecuteReader(
      CommandBehavior.KeyInfo | CommandBehavior.SchemaOnly)) 
{ 
    return reader.GetSchemaTable(); 
} 

結果DataTable將包含輸出模式。

如果我沒有記錯的話,你不必爲這項工作傳遞參數。

+1

非常感謝。這工作正常。 –