Ошибка при получении данных внешнего ключа на объекте - PullRequest
1 голос
/ 08 октября 2011

Я новичок в MVC2 и Entity Framework, и я попытался получить список продуктов с соответствующим именем категории, но мне вернулась ошибка

"Ссылка на объект не установлена ​​на экземпляробъект. "

У меня есть таблица Product с внешним ключом Category.

Я использую MVC2 и Entity Framework 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%>

1 Ответ

2 голосов
/ 08 октября 2011

Вы выбираете только продукты - вы не в настоящее время, включая категории.Это означает, что вы вернете свои объекты продукта, но любые связанные объекты, на которые они ссылаются, не загружаются автоматически - поэтому свойство .CatProduto будет иметь значение NULL, и поэтому вы 'Вы получаете ошибку.

Вам необходимо явно указать, какие дополнительные сущности вы хотите загрузить - что-то вроде:

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

Таким образом, вы должны получить обратно свои Produto объекты,и их свойство CatProduto также должно быть загружено и заполнено.

Так что если вы измените свой индексный метод на:

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

, он должен работать.

...