Mapeamento Fluent API

06/10/2017

7

Bom dia, Estou tendo dificuldade em fazer o mapeamento de três classes, onde são Cliente, Matricula e Convenio. Cada cliente pode ter muitas matriculas então fica relacionamento de um para muitos e cada matricula deve ter um convenio mas convenio pode ter diversas matriculas o que também faz com que fique relacionamento um para muitos entre convenio e matricula. porem quando vou adicionar uma Migration da erro ("A sequência não contém elementos de correspondência") e não sei o que esta ocasionando isto.

Segue abaixo minhas classe para que possam analisar:

public class Cliente : Entity
    {
        public Cliente()
        {
            this.Telefones = new List<TelefoneCliente>();
            this.Enderecos = new List<EnderecoCliente>();
            this.Matriculas = new List<Matricula>();
            this.Emails = new List<EmailCliente>();

        }

        public string Nome { get; set; }
        public string CPF { get; set; }
        public string RG { get; set; }
        public DateTime Nascimento { get; set; }
        public virtual Indicacao IndicadoPor { get; set; }
        public virtual Enum.Cliente.Sexo Genero { get; set; }
        public virtual Enum.Cliente.EstadoCivil EstadoCivil { get; set; }
        public string Observacoes { get; set; }
        public bool Ativo { get; set; }

        public virtual ICollection<Matricula> Matriculas { get; set; }
        public virtual ICollection<TelefoneCliente> Telefones { get; set; }
        public virtual ICollection<EnderecoCliente> Enderecos { get; set; }
        public virtual ICollection<EmailCliente> Emails { get; set; }




    }


 public class Matricula : Entity
    {
        public Matricula()
        {
            
        }

        public string NumeroMatricula { get; set; }
        public virtual Cliente Cliente { get; set; }
        public virtual Convenio Convenio { get; set; }
    }


public class Convenio :Entity
    {
        public Convenio()
        {
     
            this.Matriculas = new List<Matricula>();
            this.Enderecos = new List<EnderecoConvenio>();
            this.Emails = new List<EmailConvenio>();
            this.Telefones = new List<TelefoneConvenio>();
        }

        public string RazaoSocial { get; set; }
        public string CNPJ { get; set; }
        public string Site { get; set; }
        public bool Ativo { get; set; }

        public virtual ICollection<TelefoneConvenio> Telefones { get; set; }
        public virtual ICollection<EmailConvenio> Emails { get; set; }
        public virtual ICollection<Matricula> Matriculas { get; set; }
        public virtual ICollection<EnderecoConvenio> Enderecos { get; set; }

    }


 public class ClienteMap:EntityTypeConfiguration<Cliente>
    {
        public ClienteMap()
        {
            ToTable("TBL_CLIENTES");

            HasKey(c => c.Id);
            Property(c => c.Id).HasColumnName("CD_CLIENTE");
            Property(c => c.Nome).IsRequired().HasMaxLength(150).HasColumnName("DS_NOME");
            Property(c => c.CPF).IsOptional().HasMaxLength(14).HasColumnName("NR_CPF");
            Property(c => c.RG).IsOptional().HasColumnName("NR_RG");
            Property(c => c.Nascimento).IsRequired().HasColumnName("DT_NASCIMENTO").HasColumnType("Date");
            Property(c => c.Genero).IsRequired().HasColumnName("CD_GENERO");
            Property(c => c.EstadoCivil).IsRequired().HasColumnName("CD_ESTADO_CIVIL");
            Property(c => c.Ativo).IsRequired().HasColumnName("X_ATIVO");
            Property(c => c.Observacoes).IsOptional().HasColumnName("DS_OBSERVACAO");
            Property(c => c.DataCadastro).IsRequired().HasColumnName("DT_CADASTRO");
            Property(c => c.DataAtualizacao).IsRequired().HasColumnName("DT_ATUALIZACAO");


            HasMany<Matricula>(c => c.Matriculas);
            HasMany<EnderecoCliente>(c => c.Enderecos);
            HasMany<EmailCliente>(c => c.Emails);
            HasMany<TelefoneCliente>(c => c.Telefones);



        }


    }


 public class MatriculaMap : EntityTypeConfiguration<Matricula>
    {
        public MatriculaMap()
        {
            ToTable("TBL_CLIENTES_MATRICULAS");

            HasKey(m => m.Id);
            Property(c => c.Id).HasColumnName("CD_MATRICULA");
            Property(m => m.NumeroMatricula).IsRequired().HasMaxLength(150).HasColumnName("NR_MATRICULA");
            Property(m => m.DataCadastro).IsRequired().HasColumnName("DT_CADASTRO").HasColumnType("Date");
            Property(m => m.DataAtualizacao).IsRequired().HasColumnName("DT_ATUALIZACAO").HasColumnType("Date");

           
        }
    }



 public class ConvenioMap:EntityTypeConfiguration<Convenio>
    {
        public ConvenioMap()
        {
            ToTable("TBL_CONVENIOS");
            HasKey(c => c.Id);
            Property(c => c.Id).HasColumnName("CD_CONVENIO");
            Property(c => c.RazaoSocial).IsRequired().HasMaxLength(150).HasColumnName("DS_RAZAO_SOCIAL");
            Property(c => c.CNPJ).IsRequired().HasMaxLength(18).HasColumnName("NR_CNPJ");
            Property(c => c.Ativo).IsRequired().HasColumnName("X_ATIVO");
            Property(c => c.DataCadastro).IsRequired().HasColumnName("DT_CADASTRO").HasColumnType("Date");
            Property(c => c.DataAtualizacao).IsRequired().HasColumnName("DT_ATUALIZACAO").HasColumnType("Date");

            HasMany<TelefoneConvenio>(c => c.Telefones);
            HasMany<EmailConvenio>(c => c.Emails);
            HasMany<EnderecoConvenio>(c => c.Enderecos);
            HasMany(c => c.Matriculas).WithMany().Map(m => m.MapRightKey("CD_CONVENIO"));

        }
    }
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira