在模型和 AspNetUsers 之间加入(包含)



几次,我需要在AplicationUsers (aspnetusers(中获取用户名。就像在Chamado模型(表(中一样,我有一个列Id_Agente(用户(。使用一个简单的列表,我会得到类似的东西:

"3Q0aju9-9ijuso-9sodkci...">

public class Chamado
{
    public int Id { get; set; }
    public DateTime Abertura { get; set; }
    public string Titulo { get; set; }
    public string Descricao { get; set; }
    public string Id_Agente { get; set; }
    [NotMapped]
    public String NomeAgente { get; set; }    
}

为了变通方法,我创建了一个 NotMapped 字段,并用 foreach 填充它:

using (IdentityContext id2 = new IdentityContext())
{
    foreach (var item in historicos)
    {
        item.NomeAgente = id2.Users
        .Where(u => u.Id == item.Id_Agente)
        .Select(u => u.Nome).FirstOrDefault();
     }
}

但是现在我需要按Agente对Chamados进行分组,并且越来越难以解决。我试图在名为Qtde的chamados模型上制作另一个notMap,创建一个列表并从该列表中提取,但返回了一个错误:

public List<PainelChamados> ListarOrdem()
                {
                    using (SistemaContext db = new SistemaContext())
                    {
                        var chamados = db.Chamado
                            .Where(c => c.Situacao != Chamado.Esituacao.Concluido)
                            .GroupBy(c => c.Id_Agente)
                            .Select(c => new Chamado { Id_Agente = c.Key, Qtde = c.Count() });
                        using (IdentityContext id2 = new IdentityContext())
                        {
                            foreach (var item in chamados)
                            {
                                item.NomeAgente = id2.Users
                                  .Where(u => u.Id == item.Id_Agente)
                                  .Select(u => u.Nome).FirstOrDefault();
                            }
                        }
                        var query = chamados
                            .Select(c => new PainelChamados
                            {
                                Agente = c.NomeAgente,
                                Qtde = c.Qtde
                            });             
                        return query.ToList();
                    }
                }

最后但并非最不重要的一点是,我怎么能像另一个常规表一样包含 aspnetusers 表:

var query = db.Suporte_Projeto
                    .Include(l => l.Licenciado)
                    .Include(c => c.Condominio)
                    .Include(pr => pr.ProjetoProduto)
                    .Include(p => p.ProjetoAcesso);

图表数据

错误

我做了另一个解决方法!当我无法将 aspnetusers 加入我的模型表时,这似乎是一个不错的选择:

public List<PainelChamados> ListarOrdem()
        {
            using (SistemaContext db = new SistemaContext())
            {      
                var query = db.Chamado
                    .Where(c => (c.Situacao != Chamado.Esituacao.Concluido && c.Id_Agente != null))
                    .GroupBy(e => new { e.Id_Agente})
                    .Select(lg => new PainelChamados
                    {
                        CodAgente = lg.Key.Id_Agente,
                        Qtde = lg.Count()
                    });
                UsuarioData ud = new UsuarioData();
                List<PainelChamados> Lista = new List<PainelChamados>();
                foreach (var item in query)
                {
                    Lista.Add(new PainelChamados
                    {
                        CodAgente = item.CodAgente,
                        Agente = item.CodAgente == null ? string.Empty : ud.GetAgenteId(item.CodAgente),
                        Qtde = item.Qtde
                    });
                }
                return Lista;              
            }
        }

你怎么看,这是最好的解决方法吗?我可以返回我想要的列表。

带有代理名称的图表

相关内容

  • 没有找到相关文章

最新更新