2017-11-15 12 views
0

たとえば、私は複数のマルチメディアを持つSolutionsというエンティティを持っています。私は、ソリューションを照会し、マルチメディアの彼らのリストを取得したいが、私はまた、唯一のいくつかのフィールドを選択し、そのような次のようにこれらのマルチメディアのそれぞれから他の人を推測します:Entity Framework:内に新しい属性を選択します。

IQueryable<Solution> result = db.Solutions 
       .Include(s => s.Multimedia.Select(m => new MultimediaViewModel(){ 
        ID = m.ID, 
        Name = m.Name, 
        Path = m.Path, 
        Preview = MultimediasController.ConvertVideo(m), 
        Extension = MultimediasController.GetExtension(m), 
        Type = m.Type 
       })) 

以下が持つSystem.ArgumentExceptionの例外を与えますメッセージ:「インクルードパス式は、タイプで定義されたナビゲーションプロパティを参照する必要があります。参照ナビゲーションプロパティには点線のパスを使用し、コレクションナビゲーションプロパティにはSelect演算子を使用してください。

これはどのように達成できますか?あなたはこのために.INCLUDEを使用する必要はありません

[ 
    { 
     "id": 2, 
     "title": "Example", 
     "subTitle": "Example 1", 
     "multimedia": [ 
      { 
       "id": 27, 
       "name": "teste", 
       "path": "/Upload_Public/Solution/27_.mp4", 
       "preview": "/Upload_Public/Solution/27_preview.jpg", 
       "extension": "mp4", 
       "type": 0, 
      } 
     ], 
    } 
] 

答えて

0

予想される応答は、このようなものになるだろう。匿名のオブジェクトを作成し、必要なプロパティを選択します。

IQueryable<Solution> result = db.Solutions 
    .Select(s => new { 
     s.Id, 
     s.Title, 
     s.Subtitle, 
     Multimedia = new 
     { 
      s.Multimedia.ID, 
      s.Multimedia.Name, 
      s.Multimedia.Path, 
      Preview = MultimediasController.ConvertVideo(m), 
      Extension = MultimediasController.GetExtension(m), 
      s.Multimedia.Type, 
     } 
    }); 

ただし、メソッド呼び出しでは、データベース全体を評価する必要があるため、実行時エラーが発生する可能性があります。私はそれらのメソッドが何をしているのかよく分かりませんが、データがクライアント上にあると、必要な情報を元に戻して必要な情報を抽出する必要があります。

関連する問題