2016-09-19 5 views
0

テーブルを結合する際にこのクエリがありますが、インクルードテーブルまたは結合テーブルからデータが返されませんでした。Entityフレームワークのテーブルを結合する

var tasks = (from item in ctx.Tasks 
      join tp in ctx.TaskPlugins 
      on item.TaskId equals tp.TaskId 
      select item) 
       .Include(x => x.TaskPlugins).Include(x => x.TaskPlugins.Select(p => p.Plugin)).Include(x=>x.TaskPlugins.Select(p=>p.Plugin.Store)); 
return ctx.Tasks.ToList(); 

しかしTaskPlugins screenshot

エラーメッセージからデータを返さないこのクエリ:((System.Data.Entity.DynamicProxies.Task_6F777A6C52D9E84FD3DF53481564A61969CE62ABBA9D985448F99BFB8A49A2D7)new System.Collections.Generic.Mscorlib_CollectionDebugView<oRouter.Model.Task>(task).Items[0]).TaskPlugins

感謝。

+0

問題があなたに含まれています。 '.Include(x => x.TaskPlugins)'にはすでに 'Plugin'と' Plugin.Store'が含まれていなければなりません。したがって、2つの追加インクルードなしでクエリを試し、正しい値を取得するかどうかを確認してください。 –

+0

@ KeyurPATELいいえ。最初のインクルードは、すべてのオブジェクトを深くまで取得できません。 – sachin

+0

これを簡単にするために、 '.Include(" TaskPlugins ")。インクルード(" TaskPlugins.Plugin ")インクルード(TaskPlugin.Plugin.Store"); ' –

答えて

2

一つのこと、あなたがtasks.ToList()なくctx.Tasks.ToList()

セカンドを返すべきである、最後は.Include(x=>x.TaskPlugins.Select(p=>p.Plugin.Store)が必要な唯一のものであります。最初の2つは、で、が必要です。

+0

私はすでに変更しましたが、この新しいエラーがあります:無効な列名 'Plugin_StoreId'。しかしStoreIdがPluginテーブルにあります。フィールドとプラグインモデル – Jen143

+0

@ Jen143新しいエラーは何ですか? – sachin

+0

無効な列名 'Plugin_StoreId'ですが、StoreIdはPluginテーブルフィールドとプラグインモデルにあります – Jen143

関連する問題