2016-05-12 75 views
0

SPからカスタムテーブルを返すことは可能ですか?私はEFコードの最初のアプローチを使用しています。ストアドプロシージャからカスタムテーブルを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 [email protected] 
     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; } 
    } 

である私は、同じビューモデルを作成しました。しかし、私が見たところでは、SPを使用すると、私はDbContextクラスに追加した単一のテーブルデータだけを返すことができます。

答えて

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)?も役に立ちます。

+0

しかし、まずコードを使用しています。私はedmxファイルを持っていません。 My SPを自分のコンテキストクラスに追加する方法。 – Programmer

+0

@Programmer - 私の編集した答えをご覧ください。 –

関連する問題