2011-10-08 48 views
1

外鍵數據我在MVC2和Entity Framework新,我試圖讓產品具有各自的類別名稱的列表,但它返回我的錯誤錯誤獲取對實體

「對象未設置到一個對象的一個​​實例。「

我有一個表Product與外鍵Category

我正在使用MVC2和實體框架4.0。

public class Repository 
{  
     public IQueryable<Produto> ListAllProducts() 
     { 
      return entities.Produtos; 
     } 
} 

public class AdminProdutoController : Controller 
{ 

    TudoDeMassinhaRepository repository = new TudoDeMassinhaRepository();  

    public ActionResult Index()  
    {  
      var produtos = repository.ListAllProducts().ToList(); 
      return View(produtos);  
    } 
} 

代碼視圖在產生錯誤:<%: item.CatProduto.cat_produto_nome%>

回答

2

你只是選擇產品 - 你目前包括的類別。這意味着:您將收回您的產品對象,但是它們引用的任何對象對象都是自動加載的而不是 - 這就是爲什麼.CatProduto屬性將爲NULL並因此出現錯誤。

你需要明確指定要加載了哪些附加實體 - 是這樣的:

public IQueryable<Produto> ListAllProductsWithCategories() 
{ 
     return entities.Produtos.Include("CatProduto"); 
} 

這樣,你應該回到你的Produto的對象,他們的CatProduto屬性應該已被加載並填充,太。

所以,如果你改變你的指數法是:

public ActionResult Index()  
{  
     var produtos = repository.ListAllProductsWithCategories().ToList(); 
     return View(produtos);  
} 

它應該工作。

+0

嗨marc_s thaks你的迴應,但我仍然得到相同的消息。任何想法?????? – Marcio

+1

嗨,@marc_s我解決了這個問題,在數據庫上。該數據庫的數據已損壞,並且存在id_category不在分類表上的產品。非常感謝。 – Marcio

相關問題