none
Entity Framework - Code First -> Como garantir 100% que não haja perda de dados ou alteração da estrutura de Base de Dados Existente! RRS feed

  • Pergunta

  • 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!

    terça-feira, 22 de maio de 2018 20:42