Aquí podría ser tu PUBLICIDAD


¿Cómo se hace un método de selección genérico para su DAL?

votos
0

Guión

Tiene un Ensamblaje para objetos de transferencia de datos que contiene 10 clases que representan exactamente 10 tablas en su base de datos. Usted genera / construye una capa DAL que tiene métodos como -

  DTOForTable1[] GetDataFromTable1();
  DTOForTable2[] GetDataFromTable2();

y así....

Pregunta

¿Cómo hago un método que oculte los numerosos métodos para obtener datos de cada tabla del código del cliente? El método que me gustaría, por ejemplo, en el servicio o en la capa de negocios podría parecerse a ...

SomeGenericDTO[] GetDataFromTable(TableTypeEnum tableTypeEnum);
  1. Cómo hago esto ? ¿Esto es posible?

  2. Si es así para (1), ¿es una buena práctica?

  3. Si es así para (1) y (2), ¿esto simplifica o complica el diseño?

Gracias por adelantado.

Publicado el 12/03/2009 a las 19:39
fuente por usuario Perpetualcoder
En otros idiomas...        العربية       

3 respuestas

votos
2

Podrías definirlo así:

T[] GetDataFromTable1<T>() where T:IDto
{
   // you can know the table with the type of T
}

Dicho esto, preferiría tener los diferentes métodos o incluso clases para trabajar con él. En su lugar, utilizo el patrón de repositorio, sugiero buscar información sobre él.

Respondida el 12/03/2009 a las 08:00
fuente por usuario eglasius


Aquí podría ser tu PUBLICIDAD


votos
1

En estos días es muy común implementar sus clases concretas de tablas como herencia de una clase abstracta de acceso a tablas. La clase abstracta tiene métodos genéricos para consultar una tabla. Cada clase concreta puede declarar qué tabla de base de datos correspondiente (también tal vez columnas y relaciones entre tablas).

Patrones de diseño que ayudan a incluir ActiveRecord y Table Data Gateway .

Respondida el 12/03/2009 a las 08:05
fuente por usuario Bill Karwin

votos
1

Así es como lo hace mi DAL:

List<entity> customers = SQL.Read(new SearchCriteria(), new Customers());

Para realizar uniones:

List<entity> customers = SQL.Read(new SearchCriteria(), new Customers(new Orders(new OrderDetails())));

La clase DTO determina a qué tabla acceder y sus propiedades determinan qué columnas recuperar.

No puedo responder si es una mejor o una buena práctica. Es la práctica que me ha estado funcionando durante mucho tiempo. No hay métodos extraños como "GetById", "GetAll", etc.

Respondida el 12/03/2009 a las 08:03
fuente por usuario Otávio Décio