【问题标题】:Error getting foreign key data on entity获取实体的外键数据时出错
【发布时间】:2011-10-08 23:40:00
【问题描述】:

我是 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);    
    }  
}

查看产生错误的代码:&lt;%: item.CatProduto.cat_produto_nome%&gt;

【问题讨论】:

    标签: asp.net-mvc entity-framework-4 linq-to-entities


    【解决方案1】:

    您只是在选择产品 - 您当前包括类别。这意味着:您将取回您的产品对象,但它们引用的任何 相关 对象都不会自动加载 - 这就是为什么 .CatProduto 属性将为 NULL,因此你得到了错误。

    您需要明确指定要加载的其他实体 - 例如:

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

    这样,您应该取回您的 Produto 对象,并且它们的 CatProduto 属性也应该已加载和填充。

    因此,如果您将索引方法更改为:

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

    它应该可以工作。

    【讨论】:

    • 您好,marc_s 感谢您的回复,但我仍然收到相同的信息。有什么想法??????
    • 嗨,@marc_s 我解决了这个问题,在数据库上。数据库中的数据已损坏,并且有一个 id_category 的产品不在类别表中。非常感谢。
    猜你喜欢
    • 2023-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多