1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Problema com left join usando entity framework

Boa tarde galera,

Estou com um problema para realizar um left join em asp.net mvc. Não tenho muita prática em programação asp.net mvc, preciso de ajuda, desde já agradeço.

Bom galera, seguinte, possuo uma view que lista todas as telas do sistema, as mesmas estão cadastradas na base de dados. Criei uma tabela de tipo (aba), tela e as funções da tela. Estou dando um left join para resgatar os dados das três tabelas.

public IQueryable SelectForeignKey(string idEmpresa)
        {
            var resultado = from aba in _sigconEntities.Aba
                            join tela in _sigconEntities.Tela on aba.idAba equals tela.idAba
                            join telaFuncao in _sigconEntities.TelaFuncao on tela.idTela equals telaFuncao.idTela
                            where aba.idEmpresa == idEmpresa
                            select new
                            {
                                abaIdAba = aba.idAba,
                                abaNome = aba.Nome,
                                abaIdAbaSistema = aba.idAbaSistema,
                                telaIdTela = tela.idTela,
                                telaIdAba = tela.idAba,
                                telaNome = tela.Nome,
                                telaIdTelaSistema = tela.idTelaSistema,
                                telaFuncaoIdTela = telaFuncao.idTela,
                                telaFuncaoNome = telaFuncao.Nome,
                                telaFuncaoIdFuncaoSistema = telaFuncao.idFuncaoSistema
                            };

            return resultado;
        }

Estou retornando os dados para o controller e salvando em uma viewbag.

ViewBag.Permissoes = _acessoApp.SelectForeignKey("s8f50f03-c064-4afa-ba5e-397236cd2b03");

Para resgatar os dados na view faço o seguinte.

@foreach (var item in ViewBag.Permissoes)
                    {
                        <li> item.abaNome - item.abaIdSistema </li>
                    }

Como não tenho prática e muito conhecimento em asp.net mvc foi oque eu consegui fazer, não sei se é a melhor forma para fazê-lo. Abaixo segue o código das models das três classes.

public partial class Aba
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Aba()
        {
            this.Tela = new HashSet<Tela>();
        }

        public int idAba { get; set; }
        public string idEmpresa { get; set; }
        public string Nome { get; set; }
        public string idAbaSistema { get; set; }

        public virtual Empresa Empresa { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Tela> Tela { get; set; }
    }

public partial class Tela
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Tela()
        {
            this.TelaFuncao = new HashSet<TelaFuncao>();
        }

        public int idTela { get; set; }
        public int idAba { get; set; }
        public string Nome { get; set; }
        public string idTelaSistema { get; set; }

        public virtual Aba Aba { get; set; }
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<TelaFuncao> TelaFuncao { get; set; }
    }

public partial class TelaFuncao
    {
        public int idTelaFuncao { get; set; }
        public int idTela { get; set; }
        public string Nome { get; set; }
        public string idFuncaoSistema { get; set; }

        public virtual Tela Tela { get; set; }
    }
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags entity-framework html5 html sql ou faça a sua própria pergunta.