none
Duda Creando Repository en C# para WebApi RRS feed

  • Pregunta

  • Hola desarrolladores, estoy creando un Repository en C# para una Web Api rest que tengo.

    Estoy basandome en este ejemplo que me recomendaron en una Pregunta anterior. Tutorial

    En ese Tutorial en el repositorio, en la clase ProductRepository

    tienen los siguiente

    public class ProductRepository : IDisposable, ProductStore.Models.IProductRepository
        {
            private ProductsContext db = new ProductsContext();
    
            public IEnumerable<Product> GetAll()
            {
                return db.Products;
            }
            public Product GetByID(int id)
            {
                return db.Products.FirstOrDefault(p => p.Id == id);
            }
            public void Add(Product product)
            {
                db.Products.Add(product);
                db.SaveChanges();
            }
    
            protected void Dispose(bool disposing)
            {
                if (disposing)
                {
                    if (db != null)
                    {
                        db.Dispose();
                        db = null;
                    }
                }
            }
    
            public void Dispose()
            {
                Dispose(true);
                GC.SuppressFinalize(this);
            }
        }

    Por ejemplo me llama la atencion esta primera parte.

    public IEnumerable<Product> GetAll()
            {
                return db.Products;
            }

    Creo que en esta parte están consultando todos los datos pero db?? al parecer eso es entity Framework (el cual no estoy usando y no tengo idea de como se usa).

    En mi caso uso Ado.NET.

    Con ado . Net como seria el proceso??'

    en GetAll creo el select * y en getById creo otro select where id = id o consulto en base a lo que trajo el GetAll??

    El que use Dapper .Net me interrumpe en algo?
    • Editado CrissR lunes, 18 de julio de 2016 21:38
    lunes, 18 de julio de 2016 21:32

Respuestas

  • Hola,

    Creo que en esta parte están consultando todos los datos pero db?? al parecer eso es entity Framework (el cual no estoy usando y no tengo idea de como se usa).

    Si están usando entity framework, en tu caso lo reemplazarías por Dapper o ADO Net con tus propias clases de conexión.

    en GetAll creo el select * y en getById creo otro select where id = id o consulto en base a lo que trajo el GetAll??

    Lo que comentas esta bien, en el GetAll iría el select * y en getById el selectet con where, no hay problema aunque te recomendaría usar procedimientos almacenados en ves de incrustar la consulta en el código.

    El que use Dapper .Net me interrumpe en algo?

    El que uses Dapper no te interfiere en nada, solo reemplazarías lo que se esta haciendo en la clase con linq to entities por tus métodos usando dapper.

    Te dejo un ejemplo con Dapper:

    public void ActualizarEstado(Invoice documento)
            {
                AbrirConexion(); 
                var p = new DynamicParameters();
                p.Add("@emi_codigoTipoDocumentoIdentidad", documento.emi_codigoTipoDocumentoIdentidad, dbType: DbType.String);
                p.Add("@emi_numeroDocumento", documento.emi_numeroDocumento, dbType: DbType.String);
                p.Add("@docu_codigoTipoDocumento", documento.docu_codigoTipoDocumento, dbType: DbType.String);
                p.Add("@docu_serieNumero", documento.docu_serieNumero, dbType: DbType.String);
                p.Add("@docu_estado", documento.docu_estado, dbType: DbType.String);
                p.Add("@docu_mensaje", documento.docu_mensaje, dbType: DbType.String);

                Contexto.Execute(ProcedimientosBd.InvoiceActualizarEstado, p, null, null, CommandType.StoredProcedure);
                CerrarConexion();
            }

    Espero te sea de ayuda.
    • Editado Luis Rojas Vásquez lunes, 18 de julio de 2016 22:07
    • Marcado como respuesta CrissR lunes, 18 de julio de 2016 22:43
    lunes, 18 de julio de 2016 22:06

Todas las respuestas

  • Hola,

    Creo que en esta parte están consultando todos los datos pero db?? al parecer eso es entity Framework (el cual no estoy usando y no tengo idea de como se usa).

    Si están usando entity framework, en tu caso lo reemplazarías por Dapper o ADO Net con tus propias clases de conexión.

    en GetAll creo el select * y en getById creo otro select where id = id o consulto en base a lo que trajo el GetAll??

    Lo que comentas esta bien, en el GetAll iría el select * y en getById el selectet con where, no hay problema aunque te recomendaría usar procedimientos almacenados en ves de incrustar la consulta en el código.

    El que use Dapper .Net me interrumpe en algo?

    El que uses Dapper no te interfiere en nada, solo reemplazarías lo que se esta haciendo en la clase con linq to entities por tus métodos usando dapper.

    Te dejo un ejemplo con Dapper:

    public void ActualizarEstado(Invoice documento)
            {
                AbrirConexion(); 
                var p = new DynamicParameters();
                p.Add("@emi_codigoTipoDocumentoIdentidad", documento.emi_codigoTipoDocumentoIdentidad, dbType: DbType.String);
                p.Add("@emi_numeroDocumento", documento.emi_numeroDocumento, dbType: DbType.String);
                p.Add("@docu_codigoTipoDocumento", documento.docu_codigoTipoDocumento, dbType: DbType.String);
                p.Add("@docu_serieNumero", documento.docu_serieNumero, dbType: DbType.String);
                p.Add("@docu_estado", documento.docu_estado, dbType: DbType.String);
                p.Add("@docu_mensaje", documento.docu_mensaje, dbType: DbType.String);

                Contexto.Execute(ProcedimientosBd.InvoiceActualizarEstado, p, null, null, CommandType.StoredProcedure);
                CerrarConexion();
            }

    Espero te sea de ayuda.
    • Editado Luis Rojas Vásquez lunes, 18 de julio de 2016 22:07
    • Marcado como respuesta CrissR lunes, 18 de julio de 2016 22:43
    lunes, 18 de julio de 2016 22:06
  • Muchas Gracias Luis. Hoy ah sido un día excelente para mi, he aprendido bastantes cosas sobre WebApis
    lunes, 18 de julio de 2016 22:43