是否可以从SP返回自定义表格。我使用EF代码第一种方法。
这是我的SP
CREATE PROCEDURE [dbo].[GetUserNotification]
@ToUserId INT
AS
BEGIN
select TU.FullName as ToUserName,
FU.FullName as FromUserName,
N.NotificationClickType,
N.TemplateId,
J.Title as JobTitle,
J.Identifier as JobIdentifier,
B.Identifier as BidIdentifier
from Notification N
inner Join AppUser TU on TU.Identifier = N.ToUserId
inner Join AppUser FU on FU.Identifier = N.FromuserId
inner Join Bid B on B.Identifier = N.NotificationBidId
inner Join Job J on J.Identifier = B.JobId
where N.ToUserId=@ToUserId
Order By N.Identifier DESC
END
我的自定义视图模型
public class NotificationModel
{
public string ToUserName { get; set; }
public string FromUserName { get; set; }
public NotificationClickType NotificationClickType { get; set; }
public int TemplateId { get; set; }
public string JobTitle { get; set; }
public int JobIdentifier { get; set; }
public int BidIdentifier { get; set; }
}
我创建了相同的ViewModel。但是我所看到的每一个使用SP我都可以返回我在DbContext类中添加的单个表数据。
答案 0 :(得分:0)
将存储过程添加到EF模型时,它将自动创建复杂类型。 (至少它是为我做的,使用Model First)。
复杂类型的名称是添加了“_Result”的SP名称,例如GetUserNotification_Result。
您可以使用类似的复杂类型:
using (Entities dbContext = new Entities())
{
List<GetUserNotification_Result > data = dbContext.GetUserNotification(userId).ToList();
}
或者,https://msdn.microsoft.com/en-us/data/jj691402.aspx显示如何首先使用代码。 How to call Stored Procedure in Entity Framework 6 (Code-First)?也可能有所帮助。