Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

.Net EntityFramework

Boa tarde,

Uma duvida é por padrão a migration cria as tabelas com os atributos default exemplo uma varchar(max) mas e se eu quiser varchar(10) ou decimal(5, 3) como faço para alterar isso.

E para falar que o Id é autoIncrement?

O IsRequired() significa que o atributo não permite nulos certo?

3 respostas
solução!

Faz tempo que fiz o curso de Entity Framework e não estou com um projeto aqui para confirmar, mas pode usar anotações (data-annotations) nas propriedades para definir isso.

No exemplo abaixo, a propriedade Descricao será mapeada com tamanho de 100 caracteres.

[ComplexType]
    public class BlogDetalhes
    {
        [MaxLength(100)]
        public string Descricao { get; set; }
    }

Além de data-annotations, é possível definir um modelo de configuração. Consegue mais detalhes no curso Entity Framework Core parte 1: Mapeando um banco pré-existente e Entity Framework Core parte 2: Mapeando um banco pré-existente, mas também tem uma explicação no site da Microsoft Code First Data Annotations.

Sobre o ID, tenho quase certeza que o padrão é ser auto-incremento, mas consegue mudar isso com data-annotations também.

O IsRequired() realmente não vai permitir valores nulos. Você está especificando que o valor precisa ser preenchido. Está requerendo que seja preenchido.

Olá Diego, obrigado pelo solução!

Apenas complementando a resposta que te dei ontem. Além do data-annotations, também da para especificar o modelo no método OnModelCreating da classe que vai herdar de DbContext. No exemplo abaixo, a propriedade Nome vai ser mapeada no banco de dados como varchar(100) e Preço com decimal(5,3).

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<Produto>()
        .HasKey(t => t.Id);

    modelBuilder.Entity<Produto>()
        .Property(p => p.Nome)
        .HasColumnType("varchar(100)")
        .IsRequired();

    modelBuilder.Entity<Produto>()
        .Property(p => p.Preco)
        .HasColumnType("decimal(5,3)")
        .IsRequired();
}

No exemplo acima são apenas duas propriedades. Para projetos maiores essa configuração é separadas em diferentes arquivos. Isso é ensinado nos cursos que citei na resposta anterior. Vale dar uma olhada.