2017-02-16 70 views
0

這裏是我的模型實體框架`LoadWith`不帶回數據

public IEnumerable<PostJob> GetAllJobsByUserId(int id) 
{ 
    using (var context = new CleanerDataContext(@"Data Source=.\sqlexpress;Initial Catalog='Cleaning Lady';Integrated Security=True")) 
    { 
     var loadOptions = new DataLoadOptions(); 
     loadOptions.LoadWith<PostJob>(c => c.Cleaner); 
     loadOptions.LoadWith<PostJob>(c => c.User); 
     context.LoadOptions = loadOptions; 
     return context.PostJobs.Where(r => r.userId == id).ToList(); 
    } 
} 

在我看來,我試圖訪問屬性的「清潔」

@foreach (var k in Model.AllJobs) 
{ 
    <div class="panel panel-default instructions"> 
     <div class="panel-body"> 
      <span>Date: @k.date.ToShortDateString() From: @k.timeFrom Until: @k.timeUntil</span> 
      <span>Price: @k.Cleaner.Price</span> 
      <span>Total: </span> 
     </div> 
    </div> 
    <br /> 
} 

但我得到一個錯誤

對象引用未設置爲對象的實例。

爲什麼我得到這個錯誤,如果加載'清潔'一起'PostJob'?

這裏是在數據庫中的postjob

enter image description here我使用LINQ

+3

您是否已經爲Cleaner和User定義了導航屬性?你爲什麼包括用戶?您發佈的視圖不使用用戶的任何屬性。 Include將在linq查詢中包含整個其他實體。你只使用1個物業。定義視圖模型並從您的上下文填充它並將視圖模型返回到視圖會更好。 – Fran

+0

我打算使用用戶也。我無法填充它,因爲它是一個列表。我如何將每個清潔劑與每個清潔劑相匹配? – Newbie

+0

https://msdn.microsoft.com/zh-cn/library/jj713564(v=vs.113).aspx – Fran

回答

0

我認爲你有必要回歸到使用Include()

return context.PostJobs.Include(x=>x.Cleaner).Where(r => r.userId == id).ToList(); 

你的方法將是

public IEnumerable<PostJob> GetAllJobsByUserId(int id) 
{ 
    using (var context = new CleanerDataContext(@"Data Source=.\sqlexpress;Initial Catalog='Cleaning Lady';Integrated Security=True")) 
    { 
     var loadOptions = new DataLoadOptions(); 
     loadOptions.LoadWith<PostJob>(c => c.Cleaner); 
     loadOptions.LoadWith<PostJob>(c => c.User); 
     context.LoadOptions = loadOptions; 
     return context.PostJobs.Include(x=>x.Cleaner).Where(r => r.userId == id).ToList(); 
    } 
} 

不要忘記包括

using System.Data.Entity; 
+0

'System.Data.Linq.Table '不包含定義'Include'並且沒有擴展方法'Include'接受使用System.Data.Entity的 – Newbie

+0

類型的第一個參數;'現在使用此名稱空間 –

+0

獲取Object reference未設置爲對象的實例。 – Newbie