none
Patron de repositorio generico RRS feed

  • Pregunta

  • Buenas a todos

    Estoy realizando mi primer proyecto en c#, navegando por la web encontré de que es recomendable implementar un Patrón de repositorio genérico en la capa DAL para implementar funcionalidad base que sera comun a las diferentes implementaciones especificas. Lo que quisiera es que me puedan explicar el siguiente ejemplo que encontré en Leandro Tuttini Blog :

    interface IRepository<T> where T:class
    {
        List<T> GetAll();
        List<T> GetAll(List<Expression<Func<T, object>>> includes);
        T Single(Expression<Func<T, bool>> predicate);
        T Single(Expression<Func<T, bool>> predicate, List<Expression<Func<T, object>>> includes);
        List<T> Filter(Expression<Func<T, bool>> predicate);
        List<T> Filter(Expression<Func<T, bool>> predicate, List<Expression<Func<T, object>>> includes);
        void Create(T entity);
        void Update(T entity);
        void Delete(T entity);
        void Delete(Expression<Func<T, bool>> predicate);
    }
    

    Lo que quisiera es que me expliquen que hace ó que significa cada código a continuación:

    1.-  Línea 1 : IRepository<T> where T:class

    2.-  Línea 4: List<Expression<Func<T, object>>> includes

    3.-  Línea 5: Expression<Func<T, bool>> predicate

    Espero puedan ayudarme ó indicarme una página donde me pueda explicar detalladamente cada código.

    lunes, 10 de febrero de 2014 16:43

Respuestas

  • Una ultima consulta que indica o significa includes y predicate.

    son solo los nombre de los parametros de las funcionalidades

    es include porque indica los campos que se usaran en el Include() de EF para devolver esa info de la entidad

    es predicate porque es una expression que se usara como filtro de una query linq, por eso es que esta en el Func<> devuelve bool

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 11 de febrero de 2014 10:47

Todas las respuestas

  • hola

    1-

    alli se define una interfaz generica por eso el <T>

    Interfaces genéricas (Guía de programación de C#)

    en dodne se especifica una restriccion al template para que solo se pueda asignar una clase

    2-

    se define una lista de expresiones del tipo Func<>, este representa un delegado

    Func<T, TResult> (Delegado)

    basicamente func es un delegado que usa generics

    3-

    es los mismo que el punto 2 solo que no es una lista sino uan expresion simple

    en esta expression la funcion debe tomar como parametro un tipo T y devolver un bool

    para entender estos puntos debes aprender

    - delegados

    - Generics

    - Func<>

    - Expression<>

    saludos

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 10 de febrero de 2014 22:33
  • Hola leandro muchas gracias por tu respuesta. Justamente el código del repositorio lo había sacado de tu blog, disculpas si derrepente le causo molestias al publicar tu código.

    Una ultima consulta que indica o significa includes y predicate.

    gracias.........

    martes, 11 de febrero de 2014 3:52
  • Una ultima consulta que indica o significa includes y predicate.

    son solo los nombre de los parametros de las funcionalidades

    es include porque indica los campos que se usaran en el Include() de EF para devolver esa info de la entidad

    es predicate porque es una expression que se usara como filtro de una query linq, por eso es que esta en el Func<> devuelve bool

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    martes, 11 de febrero de 2014 10:47
  • Leandro gracias por aclarar mis dudas.
    martes, 11 de febrero de 2014 14:17