前段时间我在创建数据透视表时请求了帮助。你们来找我,我现在有一个存储过程,可以创建我的数据库,并可以将结果存储在一个新表中。列是动态的,因此对于应用程序中的每个事务,列总是不同的。
我遇到的问题是我的应用程序是MVC并使用实体框架。由于数据库已建模,因此我无法使用动态列名创建动态表。在使用中,EF永远不会知道他们在那里,我的观点也不会。
看起来我需要将存储过程转换为LINQ语句,然后我可以从模型端处理它。
我的存储过程包含SQL Server STUFF
函数,我不知道如何在LINQ语句中调用此函数。
SQL SQL脚本示例:
DECLARE @cols AS VARCHAR(MAX),
@query AS VARCHAR(MAX);
SELECT @cols = STUFF(( SELECT DISTINCT TOP 100 PERCENT
'],[' + convert(varchar(10), t2.date, 101)
FROM test AS t2
ORDER BY '],[' + convert(varchar(10), t2.date, 101)
FOR XML PATH('')
), 1, 2, '') + ']'
set @query = 'select name, ' + @cols + '
from
(
select name, date, cast(yesno as tinyint) as yesno
from test
) x
pivot
(
max(yesno)
for date in (' + @cols + ')
) p'
execute(@query)
MSDN有这种方法:
[EdmFunctionAttribute("SqlServer", "STUFF")]
public static string Stuff(
string stringInput,
Nullable<int> start,
Nullable<int> length,
string stringReplacement
)
...但我不知道我把它放在哪里以及我如何在LINQ中使用它。
希望有意义,任何帮助都非常赞赏!
答案 0 :(得分:0)
您可以通过ADO或使用ExecuteStoreQuery<DbDataRecord>