none
Entity Framework Code Firts RRS feed

  • Pregunta

  • Hola

    Estoy trabajando con EF code firts en entorno deskop windows forms, estoy usando una arquitectura DDD usando ninject de manera global, tengo implementado los map, el Contex y la clase BaseRepository(el patrón repository e el patrón UnitOfWork).

    Ahora quiero probar que al ejecutar mi app cree la base de datos, ¿Que debo hacer?, antes había trabajado con otros enfoques menos con code firts.

    Lo que tengo es lo siguiente:

    namespace POS.Persistencia.Modelo
    {
        public class PosContext : DbContext
        {
            public PosContext() : base("PosDb")
            {
            }
    
            public DbSet<Categoria> Categorias { get; set; }
            public DbSet<Producto> Productos { get; set; }
            public DbSet<Proveedor> Proveedores { get; set; }
    
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                modelBuilder.Configurations.Add(new CategoriaMap());
                modelBuilder.Configurations.Add(new ProductoMap());
                modelBuilder.Configurations.Add(new ProveedorMap());
    
                base.OnModelCreating(modelBuilder);
            }
        }
    }

    BaseRepossitory

    namespace POS.Persistencia { public abstract class BaseRepository<T> : IRepository<T>, IDisposable where T : class { protected DbContext Context; public BaseRepository(DbContext context, bool autoDetectChangesEnabled = false, bool proxyCreationEnabled = false) { this.Context = context; this.Context.Configuration.AutoDetectChangesEnabled = autoDetectChangesEnabled; this.Context.Configuration.ProxyCreationEnabled = proxyCreationEnabled; } public IEnumerable<T> GetAll() { List<T> Result = null; try { Result = Context.Set<T>().ToList(); } catch (Exception e) { throw(e); } return Result; }

    // Resto del código...

    UOW

    namespace POS.Persistencia
    {
        public class RepositoryUoW<T> : BaseRepository<T>, IUnitOfWork<T>, IDisposable where T : class
        {
            public RepositoryUoW(DbContext context,
                bool autoDetectChangesEnabled = false,
                bool proxyCreationEnabled = false) :
                base(context, autoDetectChangesEnabled, proxyCreationEnabled)
            {
            }
    
            protected override int TrySaveChanges()
            {
                return 0;
            }
    
            int IUnitOfWork<T>.Save(T entity)
            {
                int Result = 0;
                try
                {
                    Result = Context.SaveChanges();
                }
                catch (Exception e)
                {
                    throw (e);
                }
                return Result;
            }
    
        }
    }

    Ahora al ejecutar mi app debeía de crear la db, tengo configurado mi appConfig

    <connectionStrings>
        <add name="PosDb" connectionString="Data Source=DESKTOP-EKI5OT9\SQLEXPRESS;Initial Catalog=PosDb;Integrated Security=SSPI;" 
             providerName="System.Data.SqlClient" />
      </connectionStrings>
    </configuration>

    ¿Que es lo que me falta, solo para probar que cree la db?


    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú


    • Editado Pedro Ávila sábado, 2 de abril de 2016 13:34 xxxxxxxxx
    sábado, 2 de abril de 2016 13:30

Respuestas

  • Hola Pedro,

    Te recomiendo que te leas estos dos links, donde te explican que patrones de inicialización existen y como se utilizan, creo que son muy completos y te dará una mejor visión de que como crees manejar la creación de la BBDD con code first.

    http://www.codeguru.com/csharp/article.php/c19999/Understanding-Database-Initializers-in-Entity-Framework-Code-First.htm

    http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx

    Saludos.

    sábado, 2 de abril de 2016 16:44

Todas las respuestas

  • Hola Pedro,

    Te recomiendo que te leas estos dos links, donde te explican que patrones de inicialización existen y como se utilizan, creo que son muy completos y te dará una mejor visión de que como crees manejar la creación de la BBDD con code first.

    http://www.codeguru.com/csharp/article.php/c19999/Understanding-Database-Initializers-in-Entity-Framework-Code-First.htm

    http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx

    Saludos.

    sábado, 2 de abril de 2016 16:44
  • Ya lo solucione, tenia que acabar la implementación

    Pedro Ávila
    "El hombre sabio querrá estar siempre con quien sea mejor que él."
    Lima - Perú

    sábado, 2 de abril de 2016 18:51