Entity framework 在实体框架中使用联合表和临时表进行查询的存储过程
我有一个使用临时表和union查询数据库的存储过程:Entity framework 在实体框架中使用联合表和临时表进行查询的存储过程,entity-framework,stored-procedures,Entity Framework,Stored Procedures,我有一个使用临时表和union查询数据库的存储过程: ALTER PROCEDURE q_GetAllAttributesAndValuesByDocument(@IdDocument BIGINT) AS BEGIN SET NOCOUNT ON; SELECT AT.IDATRIBUTO, AT.NOMBREATRIBUTO, AD.VALORATRIBUTO INTO #TMP_ATTR FROM
ALTER PROCEDURE q_GetAllAttributesAndValuesByDocument(@IdDocument BIGINT)
AS
BEGIN
SET NOCOUNT ON;
SELECT
AT.IDATRIBUTO,
AT.NOMBREATRIBUTO,
AD.VALORATRIBUTO
INTO
#TMP_ATTR
FROM
ATRIBUTOS AT
INNER JOIN
ATRIBUTOSXDOCUMENTO AD ON AT.IDATRIBUTO = AD.IDATRIBUTO
WHERE
AD.IDDOCUMENTO2 = @IdDocument
SELECT
TA.IDATRIBUTO AS Id,
TA.NOMBREATRIBUTO AS Name,
TA.VALORATRIBUTO AS Value
FROM
#TMP_ATTR TA
UNION
SELECT
AT.IDATRIBUTO AS Id,
AT.NOMBREATRIBUTO AS Name,
'' AS Value
FROM
ATRIBUTOS AT
WHERE
IDATRIBUTO NOT IN (SELECT TA.IDATRIBUTO
FROM #TMP_ATTR TA)
END
当我将此存储过程添加到实体框架模型时,不会创建复杂类型,EF只会从存储过程返回一个整数
我能做什么
谢谢尝试使用CTE而不是临时表
ALTER PROCEDURE q_GetAllAttributesAndValuesByDocument(@IdDocument BIGINT)
AS
BEGIN
SET NOCOUNT ON;
WITH TMP_ATTR (Id, Name, Value)
AS
(
SELECT
AT.IDATRIBUTO,
AT.NOMBREATRIBUTO,
AD.VALORATRIBUTO
FROM
ATRIBUTOS AT
INNER JOIN
ATRIBUTOSXDOCUMENTO AD ON AT.IDATRIBUTO = AD.IDATRIBUTO
WHERE
AD.IDDOCUMENTO2 = @IdDocument
)
SELECT
TA.IDATRIBUTO AS Id,
TA.NOMBREATRIBUTO AS Name,
TA.VALORATRIBUTO AS Value
FROM
TMP_ATTR TA
UNION
SELECT
AT.IDATRIBUTO AS Id,
AT.NOMBREATRIBUTO AS Name,
'' AS Value
FROM
ATRIBUTOS AT
WHERE
IDATRIBUTO NOT IN (SELECT TA.IDATRIBUTO
FROM TMP_ATTR TA)
然后从数据库中更新模型。您希望的复杂类型是什么?