Todas as classes de persistência implementam algumas funções que nos permitem trabalhar com coleções de objetos retornados diretamente do banco de dados. Ou seja, ao invés de criar um Command, Gerar uma query com o SelectBuilder e executar para obter um DataTable, DataView ou outro objeto do ADO.Net; podemos trabalhar diretamente com coleções de nossos objetos usando o método Select de nossas classes que herdam da Persist da seguinte forma:

Passando um objeto default, ou seja sem definir nenhuma propriedade, o Select retornará uma coleção de objetos equivalente a um "SELECT * FROM Tabela", trazendo todos os registros de sua tabela.

Collection<User> list = Persist.Select(new User());

Para fazer um select equivalente a um "SELECT * FROM Tabela Where Name = 'André' " por exemplo definimos a propriedade Name de nosso objeto e passamos o mesmo como parâmetro informando a propriedade que queremos usar como condição.

// objeto que será usado para comparação
User filter = new User();

// definimos a propriedade
filter.Name = "André";

// passamos nosso objeto e informamos a propriedade que queremos comparar
Collection<User> list = Persist.Select(filter, "Name");

Se tivessemos definido mais de uma propriedade em nosso objeto, poderíamos informar todas elas nos argumentos da função da seguinte maneira:

// podemos definir várias propriedades
filter.Name = "André";
filter.Age = 23;
filter.Gender= "M";

// passamos nosso objeto e informamos a propriedade que queremos comparar
Collection<User> list = Persist.Select(filter, "Name", "Age", "Gender");

Todas as comparações feitas desta forma (usando objetos como comparação) são feitas usando o igual '=' (IGUAL), ou seja, se seu usuário se chamar 'André Paulovich', ele não será retornado em seu Select. Para usar comparações diferentes usamos uma sobrecarga do método que nos permite escrever apenas o WHERE e parametrizá-lo usando uma ou mais propriedades de nosso objeto de comparação. Veja o exemplo abaixo:

// podemos definir nossas propriedades
filter.Age = 18;

No caso do LIKE informe as porcentagens na propriedade.

// podemos definir nossa propriedade
filter.Name = "%" filter.Name "%";

Depois, passsamos nosso objeto e informamos a propriedade que queremos comparar.

Collection<User> list = Persist.Select("name like @Name AND age < @Age", filter, "Name", "Age");

Last edited Mar 9, 2010 at 1:42 PM by ivanpaulovich, version 1

Comments

No comments yet.