2016-07-14 192 views
0

我正在創建一個ASP.NET Core 1.0,並且我在RC1中創建了相同的應用程序。我在使用EF Core查詢相關表格數據時遇到了問題。ASP.NET CORE 1.0存儲庫加載相關數據EF CORE

以前我使用過EF7,一切正常,無論數據是否在字段中。我的問題是,當我使用.Include時,它沒有返回所有記錄的集合。我使用的https://docs.efproject.net/en/latest/querying/related-data.html樣本創建了模型,我的NuGet控制檯:

腳手架的DbContext 「;數據庫=博客; Trusted_Connection = TRUE;服務器=(的LocalDB)\ mssqllocaldb」 Microsoft.EntityFrameworkCore.SqlServer -outputdir模型

,得到了這個模型:

public partial class Complaint 
{ 
    public Complaint() 
    { 
     Checklist = new HashSet<Checklist>(); 
     Clnotes = new HashSet<Clnotes>(); 

    } 

    public int CompId { get; set; } 
    public string FileNum { get; set; } 
    public DateTime? ReceivedDt { get; set; } 
    public DateTime? CompletedDt { get; set; } 


     public virtual ICollection<Checklist> Checklist { get; set; } 
    public virtual ICollection<Clnotes> Clnotes { get; set; } 
    } 

我對GETALL()庫:

public IEnumerable<Complaint> GetAll() 
    { 
     try 
     { 
      return _context.Complaint 
       //.Include(t => t.Checklist) 
       //.Include(cl => cl.Clnotes) 
       .ToList(); 
     } 
     catch (Exception ex) 
     { 
      _logger.LogError("Could not get complaint with checklist", ex); 
      return null; 
     } 
    } 

問題

這是爲什麼當我使用包括相關表格的EF7時,包含了每一個r的數據ecord在數據庫中。對於EF Core,當我包含清單或clnotes表時,只有一條記錄顯示?當我不包含相關表格時,所有的投訴都會顯示出來。

回答

0

我有同樣的問題。我不知道它爲什麼這樣工作,但選擇後包括解決它爲我的領域。試試這樣:

return _context.Complaint 
    .Include(t => t.Checklist) 
    //.Include(cl => cl.Clnotes) 
    .Select(c => new { 
     c.CompId, c.FileNum, c.Checklist, // c.Clnotes 
    ) 
    .ToList(); 

您可能會需要將方法類型從IEnumerable更改爲其他方法,如IActionResult。

0

您需要添加以下行,以避免循環引用

services.AddMvc().AddJsonOptions(options => 
      { 
       options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; 
      });