none
Como relacionar tabelas com classe membro e chave estrangeira RRS feed

  • Pergunta

  • Boa noite!

    Estou com a seguinte dúvida (desculpe se minha pergunta não for muito clara, pois sou novato no ambiente WEB, bem como ASP.NET MVC e C#).

    Estou usando Interfaces, e Ninject em minha aplicação.

    Tenho um banco de dados com os CEPs do Brasil, e está relacionado e normalizado no SQL Server da seguinte forma:

    Para simplificar, vou colocar somente estas 2 tabelas.

    Estados (IdEstado, DscEstado, DscUf)

    Cidades (IdCidade, DscCidade, IdEstado)

    Quero usar a classe cidades para popular a combo com os estados, chamando da seguinte forma:

    Cidades.Estado.IdEstado  e  Cidades.Estado.DscEstado

    Como eu implemento isso? uso IQueryable<Estados> Estados dentro da classe cidades ou ponho isso dentro da interface (ICidades).

    Atualmente esta disposta da seguinte forma:

    public class Cidade
    {
        [Key]
        [Required]
        public int IdCidade { get; set; }
    
        [Required]
        [StringLength(120)]
        public string DscCidade { get; set; }
    
        [Required]
        public int IdEstado { get; set; }
    
        public Estado Estado { get; set; }
    }

    ICidadeRepository

    public interface ICidadeRepository
        {
            IQueryable<Cidade> Cidades {get;}
        }

    EFCidadeRepository

    public class EFCidadeRepository : ICidadeRepository
    {
        private readonly CepsDB db = new CepsDB();
    
        public IQueryable<Cidade> Cidades {
            get { return db.Cidades; }
        }
    }


    Preciso de saber 2 coisas:

    1 - Como pegar o DscUf pela classe Cidades, sem ter que acessar 2 tabelas manualmente.

    2 - neste cenário são poucos registros, esse método é aconselhável para trabalhar com um banco com aprox. 900 mil registros? Se não, quais seriam as melhores praticas para um caso como esse?

    Antecipadamente agradecido!




    • Editado Leandrohpa terça-feira, 2 de abril de 2013 14:43 Melhora do Titulo do post
    terça-feira, 2 de abril de 2013 02:11

Respostas

  • Oi Leandro,

    Não sei se entendi bem, mas pelo visto você está querendo carregar na página de cidades, um combobox listando todos os estados, trazendo o estado daquela cidade já escolhido no combo.

    Se você colocar a classe Estado na classe Cidade, e preencher com todos os estados cada registro na classe Cidade, você terá uma certa perda de desempenho, pois serão muitos registros.

    Talvez você poderia tentar por, carregar apenas a classe cidade, e na View da Cidade, você colocar o combo de estado e na programação da View, fazer com que carregue uma única vez todos os estados.

    Abraços.

    Juarez A. S. Júnior

    Consultor de Desenvolvimento e Banco de Dados

    E-mail: juarez.a.s.junior@gmail.com

    Blog: juarezasjunior.blogspot.com.br


    segunda-feira, 15 de abril de 2013 19:12