实体框架 - 相关实体性能

时间:2014-02-17 14:05:27

标签: c# performance entity-framework entities

我有一个查询来加载特定实体的相关实体,但是加载数据需要5秒钟,发生了什么?

var rows = clientes.Select(c => new
        {
            c.Id,
            c.Nome,
            Telefone = String.Format("(0{0}) {1}", c.DDD, c.Telefone),
            c.Email,
            Veiculo = (from v in c.Veiculos select new { v.Id, v.Modelo, v.Chassi }),
        })
    .Skip(pageNumber > 1 ? qtdRows * (pageNumber - 1) : 0)
    .Take(qtdRows)
    .ToArray();

1 个答案:

答案 0 :(得分:2)

您似乎加入了两个实体,但没有使用过滤器来获取当前客户的Veiculos。

可能你应该使用像

这样的东西
var rows = clientes.Select(c => new
        {
            c.Id,
            c.Nome,
            Telefone = String.Format("(0{0}) {1}", c.DDD, c.Telefone),
            c.Email,
            Veiculo = (from v in c.Veiculos *where v.ClientId == c.Id* select new { v.Id, v.Modelo, v.Chassi }),
        })
    .Skip(pageNumber > 1 ? qtdRows * (pageNumber - 1) : 0)
    .Take(qtdRows)
    .ToArray();

但是,更一致的方法是将导航属性Veiculo添加到实体客户端并在实体框架上放置表的连接。