AUTO RELACIONAMENTO EF ASPNET CORE 2

 Tópico anterior Próximo tópico Novo tópico

AUTO RELACIONAMENTO EF ASPNET CORE 2

ASP.NET

 Compartilhe  Compartilhe  Compartilhe
#480868 - 14/04/2018 19:36:32

MICHAELL
PORTO ALEGRE
Cadast. em:Maio/2009


Última edição em 14/04/2018 19:42:37 por MICHAELL

Olá boa noite pessoal
tenho uma tabela Categorias (CategoriaId, Nome, SubCategoriaId) sendo SubCategoriaId chave estrangeira de CategoriaId que aceita Null

Como retornar esses dados no EntityFramework alinhados? sendo nós pais primeiro e filhos na sequencia?




#480869 - 14/04/2018 19:46:22

MICHAELL
PORTO ALEGRE
Cadast. em:Maio/2009


Última edição em 14/04/2018 19:47:07 por MICHAELL

minha entidade
   public class Categoria
    {
        [Key]
        [Required]
        public int CategoriaId { get; set; }

        [Required]
        [StringLength(30)]
        public string Nome { get; set; }

        [StringLength(50)]
        public string Descricao { get; set; }

        public int? SubCategoriaId { get; set; }

        [ForeignKey("SubCategoriaId")]
        public virtual Categoria SubCategoria { get; set; }

        [InverseProperty("SubCategoria")]
        public virtual ICollection<Categoria> SubCategorias { get; set; }


    }




#480870 - 14/04/2018 20:29:52

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Categoria contem Lista<sub-categorias>, sub-categoria contêm Categoria, o ideal para esse design são duas entidades.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#480871 - 14/04/2018 21:49:55

MICHAELL
PORTO ALEGRE
Cadast. em:Maio/2009


Última edição em 14/04/2018 22:03:17 por MICHAELL

mas e como ficaria as tabelas com duas entidades?! nao entendi
todos os exemplo que vi sobre auto relacionamento, tinha parent_id na mesma entidade e tabela




#480873 - 15/04/2018 13:27:18

CLEVERTON
SERRINHA
Cadast. em:Dezembro/2003


Membro da equipe

Última edição em 15/04/2018 13:27:55 por CLEVERTON

Olha, uma experiência pessoal:
Se vc for usar o projeto em Xamarin Andrfoid ou Xamarin Forms vc vai ter problema com essas anotações (na hora de usar o SQLite ORM experiência própria )

Porque vc não deixa as classes limpar SEM essas anotações ?
Dessa forma vc deixa seu projeto de Entidades totalmente desacoplado de dependências.
[Key]
[Required],
[StringLength(50)]
[ForeignKey("SubCategoriaId")]

vc pode fazer tudo isso via FLUENT, no seu DbContext  vou deixar uns exemplos abaixo.

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
  //campo Requerido ( not null )
            modelBuilder.Entity<Cidade>().Property(l => l.Nome).IsRequired();

  //Comprimento
            modelBuilder.Entity<Cidade>().Property(l => l.Nome).HasMaxLength(75);

  //Precisão
      modelBuilder.Entity<PedidoDet>().Property(l => l.Qtde).HasPrecision(8, 3);

  //Chave única (Identidade)
      modelBuilder.Entity<Cidade>().HasKey(t => t.IdCidade);  

  //Chave Unica
            modelBuilder.Entity<Pessoa>().HasIndex(u => u.NumeroDocumento).IsUnique();

  //Chave única Composta
            modelBuilder.Entity<PessoaTelefone>().HasIndex(p => new { p.Numero, p.IdPessoa }).IsUnique();

//Relacionamento 1-1 ( Chave estrangeira )
modelBuilder.Entity<ContaCab>()
                     .HasRequired(i => i.subGrupo)
                     .WithMany()
                     .HasForeignKey(i => i.IdContaSubGrupo)
                     .WillCascadeOnDelete(false);

//Relacionamento 1-N ( Chave estrangeira )
            modelBuilder.Entity<ContaDet>()
                     .HasRequired(i => i.Cab)
                     .WithMany(s => s.Detalhes)
                     .HasForeignKey(i => i.IdContaCab)
                     .WillCascadeOnDelete(false);

}




#480881 - 16/04/2018 09:46:03

MICHAELL
PORTO ALEGRE
Cadast. em:Maio/2009


Última edição em 16/04/2018 09:46:34 por MICHAELL

Citação:
:
Olha, uma experiência pessoal:
Se vc for usar o projeto em Xamarin Andrfoid ou Xamarin Forms vc vai ter problema com essas anotações (na hora de usar o SQLite ORM experiência própria )

Porque vc não deixa as classes limpar SEM essas anotações ?
Dessa forma vc deixa seu projeto de Entidades totalmente desacoplado de dependências.
[Key]
[Required],
[StringLength(50)]
[ForeignKey("SubCategoriaId")]

vc pode fazer tudo isso via FLUENT, no seu DbContext  vou deixar uns exemplos abaixo.

  protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
  //campo Requerido ( not null )
            modelBuilder.Entity<Cidade>().Property(l => l.Nome).IsRequired();

  //Comprimento
            modelBuilder.Entity<Cidade>().Property(l => l.Nome).HasMaxLength(75);

  //Precisão
      modelBuilder.Entity<PedidoDet>().Property(l => l.Qtde).HasPrecision(8, 3);

  //Chave única (Identidade)
      modelBuilder.Entity<Cidade>().HasKey(t => t.IdCidade);  

  //Chave Unica
            modelBuilder.Entity<Pessoa>().HasIndex(u => u.NumeroDocumento).IsUnique();

  //Chave única Composta
            modelBuilder.Entity<PessoaTelefone>().HasIndex(p => new { p.Numero, p.IdPessoa }).IsUnique();

//Relacionamento 1-1 ( Chave estrangeira )
modelBuilder.Entity<ContaCab>()
                     .HasRequired(i => i.subGrupo)
                     .WithMany()
                     .HasForeignKey(i => i.IdContaSubGrupo)
                     .WillCascadeOnDelete(false);

//Relacionamento 1-N ( Chave estrangeira )
            modelBuilder.Entity<ContaDet>()
                     .HasRequired(i => i.Cab)
                     .WithMany(s => s.Detalhes)
                     .HasForeignKey(i => i.IdContaCab)
                     .WillCascadeOnDelete(false);

}

VALEW a dica..
pretendo passar tudo fluent depois, mas com annotarions nao estou tenho nenhum trabalho e tem me atendido perfeitamente até o momento.




#480884 - 16/04/2018 10:05:58

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
As annotations, são necessárias para o funcionamento correto do EF, principalmente "[Key]", ela quem indica qual coluna(propriedade) é a chave primária. O parser usa essa annotation por reflection para várias tarefas.

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#480890 - 16/04/2018 12:07:23

MICHAELL
PORTO ALEGRE
Cadast. em:Maio/2009


Última edição em 18/04/2018 18:17:56 por MICHAELL

bom, depois de muito pesquisar... encontrei varios exemplo no link abaixo

  http://gijgo.com/tree/demos/bootstrap-treeview

Tem exemplo do Front e do BackEnd em asp.net





#480993 - 18/04/2018 18:17:12

MICHAELL
PORTO ALEGRE
Cadast. em:Maio/2009


Última edição em 18/04/2018 18:17:40 por MICHAELL

encontrei tambem sobre um tipo de dado   hierarchyid do SQLServer muito pouco conhecido

https://www.sqlshack.com/use-hierarchyid-sql-server/  




 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário