我是MVC2和实体框架的新手,我尝试获取具有相应类别名称的产品列表,但它返回了错误
“对象引用未设置为对象的实例。”
我有一张带有外键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%>
答案 0 :(得分: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);
}
它应该有用。