2
respostas

Como configurar um relacionamento um para um.

Boa noite.

Tenho as classes:

public class TipoPagto
{
    public int Id { get; set; }
    public string Descricao { get; set; }
}

e também a classe:

public class Conta
{
    public int Id { get; set; }
    public short Mes { get; set; }
    public short Ano { get; set; }
    public DateTime DataVecto { get; set; }
    public string Descricao { get; set; }
    public decimal Valor { get; set; }
    public string NumeroDoc { get; set; }
    public string Parcela { get; set; }
    public TipoPagto TipoPagto { get; set; }
    public string Status { get; set; }
    public string Observacao { get; set; }
}

Configurei a classe Configure como mostra abaixo, mas a tabela de tipos de pagamentos vem com as colunas todas nulas.

public void Configure(EntityTypeBuilder builder) { builder .ToTable("copag");

        builder
            .Property(a => a.Id)
            .HasColumnName("copag_id");

        builder
            .Property(a => a.Mes)
            .HasColumnName("copag_mes")
            .HasColumnType("smallint")
            .IsRequired();

        builder
            .Property(a => a.Ano)
            .HasColumnName("copag_ano")
            .HasColumnType("smallint")
            .IsRequired();

        builder
            .Property(a => a.DataVecto)
            .HasColumnName("copag_dt_vencto")
            .HasColumnType("datetime")
            .IsRequired();

        builder
            .Property(a => a.Descricao)
            .HasColumnName("copag_descricao")
            .HasColumnType("varchar(100)")
            .IsRequired();

        builder
            .Property(a => a.Valor)
            .HasColumnName("copag_valor")
            .HasColumnType("decimal(14,2)")
            .IsRequired();

        builder
            .Property(a => a.NumeroDoc)
            .HasColumnName("copag_nr_doc")
            .HasColumnType("varchar(20)");

        builder
            .Property(a => a.Parcela)
            .HasColumnName("copag_parcela")
            .HasColumnType("varchar(10)");

        builder
            .HasOne<TipoPagto>(a => a.TipoPagto)
            .WithOne()
            .HasForeignKey<TipoPagto>(t => t.Id);

        builder
            .Property(a => a.Status)
            .HasColumnName("copag_status")
            .HasColumnType("char(1)")
            .HasDefaultValue("A")
            .IsRequired();

        builder
            .Property(a => a.Observacao)
            .HasColumnName("copag_obs")
            .HasColumnType("varchar(150)");
    }

Por favor alguém poderia me ajudar com esta configuração destas 2 classes.

Obrigado, Ari.

2 respostas

Olá, primeiro vc deve saber se a propriedade TipoPagto da classe Conta está realmente sendo preenchida, depois vc pode tentar(não tenho certeza se vai dar certo) e fazer o código abaixo:

builder .HasOne(a => a.TipoPagto.Id) .WithOne() .HasForeignKey(t => t.Id);

Caso não de certo informe aqui para eu tentar te ajudar.

Não deu certo.