A minha dúvida é , ele já criou a primeira migração baseada no que ??
Porque eu deveria informar o nome da tabela, os índices e as colunas.
Como que o entity criou o migration inicial simplesmente baseado no comando Add-Migration Inicial ?
A minha dúvida é , ele já criou a primeira migração baseada no que ??
Porque eu deveria informar o nome da tabela, os índices e as colunas.
Como que o entity criou o migration inicial simplesmente baseado no comando Add-Migration Inicial ?
Olá, rcoproc
Uma das maneiras de incluir as entidades do modelo na migração é adicionar propriedades DbSet<Entidade>
na classe do contexto (DbContext
):
public class Contexto : DbContext
{
public DbSet<Produto> Produtos { get; set; }
public DbSet<ItemPedido> ItensPedido { get; set; }
public Contexto(DbContextOptions<Contexto> options)
: base(options)
{
}
}
Se você adicionar uma outra propriedade com DbSet
nessa classe e enviar um comando Add-Migration
, a migração vai incluir a entidade adicionada no contexto.
Essa abordagem também é chamada de Model-First, pois o modelo é criado antes do banco de dados.
Ok.. entendi e neste exemplo :
DbSet ItensPedido
A tabela se chamará ItensPedido ???
E se eu quiser colocar outro padrão de nomes da tabela inclusive em outro SCHEMA do banco de dados é possível ???
Ok.. entendi e neste exemplo :
DbSet ItensPedido
A tabela se chamará ItensPedido ???
Não, ela será pluralizada e se chamará ItensPedidos
.
E se eu quiser colocar outro padrão de nomes da tabela inclusive em outro SCHEMA do banco de dados é possível ???
O Entity Framework Core 2.0 trouxe alguns "hooks" (ganchos) que permitem customiza a pluralização/singularização dos nomes do modelo (obs: a página está traduzida automaticamente, então o texto pode parecer meio estranho):
https://docs.microsoft.com/pt-br/ef/core/what-is-new/ef-core-2.0
Gerenciamento de banco de dados
Gancho de pluralização de scaffolding de DbContext O EF Core 2.0 apresenta um novo serviço IPluralizer que é usado para singularizar os nomes de tipo de entidade e pluralizar os nomes DbSet. A implementação padrão é não operacional, portanto, este é apenas um gancho que o pessoal pode conectar facilmente em seu próprios pluralizadores. Esta é a aparência para um desenvolvedor conectar seu próprio pluralizador:
public class MyDesignTimeServices : IDesignTimeServices
{
public void ConfigureDesignTimeServices(IServiceCollection services)
{
services.AddSingleton<IPluralizer, MyPluralizer>();
}
}
public class MyPluralizer : IPluralizer
{
public string Pluralize(string name)
{
return Inflector.Inflector.Pluralize(name) ?? name;
}
public string Singularize(string name)
{
return Inflector.Inflector.Singularize(name) ?? name;
}
}