1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Linq.Expressions;
5:
6: namespace Net.Bragil.Data.Repository
7: {
8: /// <summary>
9: /// Interface para a implementação do padrão Repository usando o Entity Framework.
10: /// </summary>
11: /// <typeparam name="E">Tipo do objeto persistente</typeparam>
12: /// <typeparam name="C">Tipo do contexto do Entity Framework</typeparam>
13: public interface IRepository<E, C>
14: {
15: /// <summary>
16: /// Contexto do Entity Framework
17: /// </summary>
18: C Context { get; set; }
19:
20: /// <summary>
21: /// Inserção
22: /// </summary>
23: void Insert(E entity);
24:
25: /// <summary>
26: /// Atualização
27: /// </summary>
28: void Update(E entity);
29:
30: /// <summary>
31: /// Exclusão
32: /// </summary>
33: void Delete(E entity);
34:
35: /// <summary>
36: /// Retorna o objeto que satisfaça a cláusula passada como argumento (cláusula WHERE)
37: /// </summary>
38: E SelectOne(Expression<Func<E, bool>> where);
39:
40: /// <summary>
41: /// Retorna todos os objetos de um tipo
42: /// </summary>
43: List<E> SelectAll();
44:
45: /// <summary>
46: /// Retorna os objetos usando paginação
47: /// </summary>
48: List<E> SelectAll(int maximumRows, int startRowIndex);
49:
50: /// <summary>
51: /// Retorna todos os objetos que satisfaçam a cláusula passada
52: /// </summary>
53: /// <param name="where">Cláusula WHERE</param>
54: List<E> SelectWhere(Expression<Func<E, bool>> where);
55:
56: /// <summary>
57: /// Retorna os objetos que satisfaçam a cláusula passada, usando paginação
58: /// </summary>
59: /// <param name="where">Cláusula WHERE</param>
60: List<E> SelectWhere(Expression<Func<E, bool>> where, int maximumRows, int startRowIndex);
61:
62: /// <summary>
63: /// Retorna um objeto IQueryable, possibilitando formar queries usando expressões Lambda
64: /// </summary>
65: IQueryable<E> QueryAll();
66:
67: /// <summary>
68: /// Retorna um IQueryable com os objetos usando paginação
69: /// </summary>
70: IQueryable<E> QueryAll(int maximumRows, int startRowIndex);
71:
72: /// <summary>
73: /// Retorna a quantidade de objetos persistentes.
74: /// </summary>
75: int GetCount();
76:
77: /// <summary>
78: /// Retorna a quantidade de objetos persistentes que satisfaçam a cláusula WHERE
79: /// </summary>
80: int GetCount(Expression<Func<E, bool>> where);
81: }
82: }