Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq to SQL:同一存储过程基于参数返回动态列_Linq_Stored Procedures_Linq To Sql_Diff - Fatal编程技术网

Linq to SQL:同一存储过程基于参数返回动态列

Linq to SQL:同一存储过程基于参数返回动态列,linq,stored-procedures,linq-to-sql,diff,Linq,Stored Procedures,Linq To Sql,Diff,销售人员需要按客户ID、部门ID和产品ID进行搜索。用户界面只是有 客户、部门和产品的下拉列表,@paramType 供用户键入ID的文本框。paramVal 调用存储过程SP1以返回不同的列,并且根据参数@paramType、@paramVal,列数也不同 这在过去很容易,没有Linq。Linq定义固定数量的列。2013年有一个线程有部分解决方案。我想知道最近有没有人做过?例如,designer.cs文件中有[TableName=dbo.table1]、[TableName=dbo.table

销售人员需要按客户ID、部门ID和产品ID进行搜索。用户界面只是有

客户、部门和产品的下拉列表,@paramType 供用户键入ID的文本框。paramVal 调用存储过程SP1以返回不同的列,并且根据参数@paramType、@paramVal,列数也不同

这在过去很容易,没有Linq。Linq定义固定数量的列。2013年有一个线程有部分解决方案。我想知道最近有没有人做过?例如,designer.cs文件中有[TableName=dbo.table1]、[TableName=dbo.table2]和[FunctionName=dbo.SP],我可以在.dbml文件的左窗格中定义表。但是怎么说呢

public ISingleResult<SP> SP(...)

当返回为表1或表2时,

我会认为从单个存储过程返回不同形状的结果集是一个非常糟糕的做法。这只是原因之一。不要这样做-如果你有三组不同的结果-创建三个单独的过程。。。。不要让一个“一刀切”的程序——这很糟糕,很难长期维护——只是糟糕的设计。不要这样做-认真地说。通常,SP专用于一个目的。然而,可能有许多情况需要不同形状的结果集。一个很好的例子是SQLProfiler列列表,用户可以根据需要检查或取消检查列。同样,销售UI也是一个。如果没有LINQ,将SP返回的数据集绑定到带有自动生成列的网格永远不会有问题。事实上,下拉列表不限于三个选项。如果查询逻辑是复杂的,那么专用的逻辑就是最好的选择,否则多个If。。。我是一个老派,TSQL存储过程比LINQ好得多。