Mapeamento Fluent API
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:
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"));
}
}Paulo Vargas
Curtidas 0