얼마 전에 피벗 테이블을 만드는 데 도움을 요청했습니다. 너희들이 나를 위해 나와서 피벗을 만들고 결과를 새로운 테이블에 저장할 수있는 저장 프로 시저가 생겼다. 열은 동적이므로 응용 프로그램의 각 트랜잭션마다 항상 달라집니다.SQL 함수를 사용하여 SQL Server 저장 프로 시저를 LINQ로 변환
내 문제는 내 응용 프로그램이 MVC이고 Entity Framework를 사용한다는 것입니다. 데이터베이스가 모델링되었으므로 동적 열 이름을 사용하여 플라이 테이블에 작성할 수 없습니다. 사용 중에, 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.
희망이 있었으면 좋겠다.
사용 할 수 있습니다. EF 모델에서는 쓸모가 없습니다. C#에서는'string.Join'이 훨씬 쉽습니다. 하지만 그건 문제가 아닙니다. 문제는 복잡한 유형의 동적 레코드를 캡처 할 수 없다는 것입니다. –