Prezados,
Sou iniciante em Entity Framework e na utilização do
Code-First, estou construindo uma aplicação para uma
Base de Dados já Existente e como sei que o Entity Framework possui vários
Database Initializers fiquei um pouco inseguro no que se refere a tal fato, pois quero garantir de forma SEGURA que não venha a ocorrer nenhuma alteração ou perda de dados em produção, dessa forma mostro-lhes a estrutura de dados criada:
1) Configuração da Entidade:
public class UsuarioConfig
: EntityTypeConfiguration<Usuario> {
public UsuarioConfig()
{
ToTable("UsuariosControle");
HasKey(u => u.id);
Property(p => p.login)
.HasColumnName("usuario")
.HasColumnType("varchar")
.HasMaxLength(60)
.IsRequired();
Property(p => p.senha)
.HasColumnName("senha")
.HasColumnType("varchar")
.HasMaxLength(60)
.IsRequired();
}
}
2) Context:
using System.Data.Entity;
using Supermercado.Model;
using Supermercado.Infraestrutura.EntityConfig;
namespace Supermercado.Infraestrutura.Context
{
public class SupermercadoContext : DbContext
{
public SupermercadoContext(string ConnectionString)
:base(ConnectionString) {
Database.SetInitializer<SupermercadoContext>(null);
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new UsuarioConfig());
}
public DbSet<Usuario> Usuario { get; set; }
}
}
Segue algumas dúvidas:
1) O Database.SetInitializer<SupermercadoContext>(null) é sufiente para evitar qualquer alteração no Banco de Dados Existente ou perca de informações?
2) Da forma como está o
OnModelCreating(DbModelBuilder modelBuilder) pode realizar alguma mudança no Banco de Dados Existente? Pois o mesmo inicializa as configurações
da Entidade Usuario!
3) Existe alguma outra configuração que eu poderia realizar para me garantir 100%
que nada irá ser alterado nem nenhuma informação no Banco de Dados de produção venha a ser alterado e perdido?
De antemão, grato pela atenção!