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

Configurar toda entidade do tipo string no entity core

como ficou esse trecho de código abaixo no Entity Core ? modelBuilder.Properties().Configure(p => p.HasMaxLength(200));

4 respostas

Oi Wesley

Você pode usar este padrão no exemplo abaixo, em que estou definindo o tamanho máximo para o título de um livro com o método HasMaxLength():

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Livro>()
            .Property(b => b.Titulo).HasMaxLength(150);
    }

Como alternativa, você pode utilizar o atributo MaxLength no modelo:

public class Livro
{
    public int LivroId { get; set; }
    [MaxLength(150)]
    public string Titulo { get; set; }
    public string Autor { get; set; }
}
solução!

Certo. Marcelo, como ficou essa essa linha abaixo do EF6 No EFCore

//Aqui vamos remover a pluralização padrão do Etity Framework que é em inglês modelBuilder.Conventions.Remove();

        /*Desabilitamos o delete em cascata em relacionamentos 1:N evitando
         ter registros filhos     sem registros pai*/
        modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();

        //Basicamente a mesma configuração, porém em relacionamenos N:N
        modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();

        /*Toda propriedade do tipo string na entidade POCO
         seja configurado como VARCHAR no SQL Server*/
        modelBuilder.Properties<string>().Configure(p => p.HasColumnType("varchar"));

Olá,

Encontrei essa resposta em outro site, mas não testei:

https://stackoverflow.com/a/48131066/1123307

Pelo que li, o Entity Framework Core 2.0 ainda não possui essas configurações que existiam no Entity Framework 6:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    // equivalent of modelBuilder.Conventions.AddFromAssembly(Assembly.GetExecutingAssembly());
    // look at this answer: https://stackoverflow.com/a/43075152/3419825

    // for the other conventions, we do a metadata model loop
    foreach (var entityType in modelBuilder.Model.GetEntityTypes())
    {
        // equivalent of modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        entityType.Relational().TableName = entityType.DisplayName();

        // equivalent of modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
        // and modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
        entityType.GetForeignKeys()
            .Where(fk => !fk.IsOwnership && fk.DeleteBehavior == DeleteBehavior.Cascade)
            .ToList()
            .ForEach(fk => fk.DeleteBehavior = DeleteBehavior.Restrict);
    }

    base.OnModelCreating(modelBuilder);
}

Um abraço, Marcelo!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software