2015-06-09 64 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

非常感谢。这工作正常。 –