2011-10-08 64 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