加入(包括)Model和AspNetUsers之间

时间:2016-02-11 02:27:07

标签: c# mysql entity-framework asp.net-identity

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

" 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模型上制作另一个notMapped,制作一个列表并从该列表中提取但返回错误:

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);

Chart Data

Error

1 个答案:

答案 0 :(得分:0)

我做了另一个工作!这似乎是一个很好的选择,而我无法将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;              
            }
        }

您如何看待,这是解决问题的最佳方式吗?我可以回复我想要的清单。

Chart With Agente Names