[英]Entity Framework stored procedure return type changed
我主要通过删除.EDMX
文件并再次添加来更新数据模型,以确保获得数据库中的所有内容。
我遇到一个奇怪的问题,在删除并重新添加.EDMX
之后,其中的存储过程返回类型之一已更改。 存储过程代码保持不变,可以在下面找到。 我不确定我做错了什么?
SQL Server存储过程(从未更改):
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[usp_SearchOrders]
@orderid int = null, @statusid int = null,
@startdate datetime = null, @enddate datetime = null,
@customername varchar(30) = null, @customeraddress varchar(30) = null
AS
SELECT
O.OrderID Order_ID, O.OrderDate,
OrderTotal = (SELECT SUM(od.UnitPrice - (od.UnitPrice * od.Discount))
FROM [Order Details] od
WHERE od.OrderID = O.OrderID),
Discount = (SELECT SUM(od.UnitPrice * od.Discount)
FROM [Order Details] od
WHERE od.OrderID = O.OrderID),
CC.Email1, CC.Phone,
Status = (SELECT OS.OrderStatusName
FROM OrderStatus OS
WHERE OS.OrderStatusID = O.OrderStatusID),
OrderType = (SELECT OT.OrderTypeName
FROM OrderType OT
WHERE OT.OrderTypeID = O.OrderTypeID)
FROM
Orders O
JOIN
Customers C ON O.CustomerID = C.CustomerID
JOIN
CustomersContactDetails CC ON C.CustomerID = CC.CustomerID
WHERE
(O.OrderID = @orderid OR @orderid IS NULL)
AND (O.OrderStatusID = @statusid OR @statusid IS NULL)
AND (O.OrderDate >= @startdate OR @startdate IS NULL)
AND (O.OrderDate <= @enddate OR @enddate IS NULL)
AND (C.CustomerName LIKE @customername OR @customername IS NULL)
AND (CC.Address LIKE @customeraddress OR @customeraddress IS NULL)
AND (CC.City LIKE @customeraddress OR @customeraddress IS NULL)
C#代码: _dbContext.usp_SearchOrders(1,1,DateTime.Now, DateTime.Now.AddDays(1),'Hitin','BH');
更新之前返回类型: usp_SearchOrders_Result
重新添加返回类型后: int
我从来没有做任何复杂的类型或做任何映射,类usp_SearchOrders_Result
是自己创建的。
这个问题背后的可能原因是什么?
您需要在存储过程的顶部具有“ SET NOCOUNT ON”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.