2016-08-18 16 views
0

に翻訳することができない私は、コードを実行しようとするとLINQ to Entitiesはメソッドを認識しません。そして、この方法では、店舗の表現

public static DalUser ToDalUser(this User ormUser) 
    { 
     return new DalUser() 
     { 
      Id = ormUser.Id, 
      FirstName = ormUser.FirstName, 
      LastName = ormUser.LastName, 
      About = ormUser.About, 
      Email = ormUser.Email, 
      Password = ormUser.Password, 
      Roles = ormUser.Roles.Select(role => role.ToDalRole()) 
     }; 
    } 

エラーが

追加情報が発生:エンティティへのLINQは、メソッド「DAL.Interfaceを認識しません。 DTO.DalUser ToDalUser(ORM.User) 'メソッドであり、このメソッドをストア式に変換することはできません。問題何を見る

@foreach (var item in Model) 
{ 
    <tr> 
     <td> 
      @Html.DisplayFor(modelItem => item.FirstName) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.LastName) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Email) 
     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.About) 
     </td> 
     <td> 
      @Html.DisplayTextFor(modelItem => item.Role) 
     </td> 
    </tr> 
} 

?助けてください!

+1

'.ToDalRole()'はSQLにマップできません。投稿の検索をマッピングする必要があります。 –

+2

[LINQ to Entities]の複製がSystem.String ToString()メソッドのメソッドを認識せず、このメソッドをストア式に変換できません](http://stackoverflow.com/questions/5899683/linq-to -entities-does-not-recognized-the-method-system-string-tostring-method) –

+0

@DavidL申し訳ありませんが、私はこれを行う方法を理解していません。私を詳細に説明できますか? –

答えて

0

あなたがこれを行うことができる必要があり、その多くはない場合、あなたが持っているどのように多くの役割に応じて:

Roles = ormUser.Roles 
    .ToArray() 
    .Select(role => role.ToDalRole()) 

ToArray()方法であることの理由は、Selectを呼び出す前に、メモリにすべての役割をロードします。何千(または何百)の場合、これはお勧めしません。

+0

それは役に立たなかった:( –

関連する問題