2016-02-12 218 views
1

我不太清楚我在這裏錯過了什麼。這似乎毫無疑問,但由於某種原因,類總是回來爲空,我總是遇到這些問題時使用實體框架。我想弄清楚我做錯了什麼。產品ID,產品名稱和類別ID都有數據,但類別始終爲空。我試圖撤回產品列表以及與產品關聯的類別。實體框架7關係

任何幫助,將不勝感激。

使用臭名昭著的Northwind數據庫

[Table("Products")] 
public class Products 
{ 
    [Key] 
    public int ProductID { get; set; } 
    public string ProductName { get; set; } 
    public int CategoryID { get; set; } 
    [ForeignKey("CategoryID")] 
    public virtual Categories Category { get; set; } 
} 

[Table("Categories")] 
public class Categories 
{ 
    [Key] 
    public int CategoryID { get; set; } 
    public string CategoryName { get; set; } 
    public virtual ICollection<Products> Product { get; set; } 
} 

的DbContext(相關代碼)

public DbSet<Categories> Categories { get; set; } 
public DbSet<Products> Products { get; set; } 

這就是會返回產品從我的存儲庫中的代碼

public IEnumerable<Products> GetAll() 
{ 
    return _db.Products.AsEnumerable(); 
} 
+1

的路線圖,您可以提供使用該查詢拉回空類別? – Matthew

+0

@MatthewVerstraete補充說。 – Anonymous

+1

return _db.Products.Include(「Categories」)。AsEnumerable(); –

回答

4

您應該使用擴展方法從EntityFramework.Core中的Microsoft.Data.Entity命名空間的Include()a ssembly。

using Microsoft.Data.Entity; 
    ... 
    return _db.Products.Include(p => p.Category).AsEnumerable(); 

因爲EF7不支持相關實體的延遲加載,但它像EF6中實現的一樣。因此您需要使用.Include方法加載所有相關的實體,例如也許將來會得到支持。

您可以按照EF7這裏https://github.com/aspnet/EntityFramework/wiki/Roadmap