2016-08-07 8 views
1

MVC 5、C# - データベース内の異なるデータセットに基づいてビューモデルを作成しています。私はビューモデルを作成する次のコードを持っています。LINQ to Entitiesはmethod ...メソッドを認識せず、このメソッドをストア式に変換することはできません。

public ActionResult Register_step6() 
    { 
     CoreGeneral cg = new CoreGeneral(); 

     var model = (from p in db.WorkPointRoles 
        select new RegisterEmployee_Step6Model() 

        { 
         Role = p.Role, 
         Selected = false, 
         RoleDescription = cg.GetRoleDescription(p.Id) 
        }); 

     return View(model); 

    } 

Iは、次のエラーメッセージを表示しエンティティへ

LINQは、メソッド「 GetRoleDescription(Int32)を可能System.String」メソッドを認識しない、この方法は、ストアに 変換できません表現。

私は、メッセージが、それがselect文に配置されているため、事業体は、私のGetRoleDescriptionコードを認識していないと何かがあることを理解する - (私はporbably間違って私の理解を言葉で表現しましたが)...とにかく、どのように私は解決しません問題は、GetRoleDescriptionをどこに置いて、返されるすべてのレコードで実行できるのでしょうか?

私はこれが誰かにとって意味をなされることを望みます!貧弱な言葉の質問に対する謝罪。前もって感謝します!

+1

「GetRoleDescription」とは何ですか? –

答えて

2

SQL Server側ではなく、RegisterEmployee_Step6Modelのインメモリへの投影を実行する必要があります。

public ActionResult Register_step6() 
{ 
    CoreGeneral cg = new CoreGeneral(); 

    var model = (from p in db.WorkPointRoles 
       select p).AsEnumerable() 
       .Select(r => new RegisterEmployee_Step6Model() 
       { 
        Role = r.Role, 
        Selected = false, 
        RoleDescription = cg.GetRoleDescription(r.Id) 
       }); 

    return View(model); 

} 
+0

ありがとう、それは完璧に働いた!これはまだ私があまりにも暑いわけではないエリアです! – Ste

+1

最初の選択クエリを省略し、 'db.WorkFopintRoles.AsEnumerable()。Select(...)'だけを使用できます。 'select'クエリはあなたのLINQクエリに対してちょうど向い合っています。 –

関連する問題