Estableciendo sus diferentes atributos, para que posteriormente manejar el mapping correcto con su correspondiente tabla a nivel de base de datos, requeriras de una mecanismo generico para hacer la lectura de los registros de dicha tabla de base de datos hacia una coleccion de Business Entities, para manejarlos como tal dentro del mundo .NET
Hasta alli, todo relativamente normal.
Pero al usar un struct para definir cierto Business Entity, te daras cuenta que el metodo SetValue del PropertyInfo o el FieldInfo -dependiendo lo que estes usando para definir las propiedades o atributos de tu Business Entity- NO estan funcionando como tu esperas.
Lo que sucede es que las estructuras o struct, son tipos de datos por valor a diferencia de las clases o class.
Y este es uno de los puntos en contra al utilizar estructuras o struct para definir tus Business Entities.
En este incidente la clase ValueType resuelve tu problema.
TEntity entity = new TEntity();
Debera ser reemplazado por:
ValueType entity = new TEntity();
Dentro del bucle que este leyendo el SqlDataReader para iterar cada uno de los registros de la consulta que hayas realizado, mapeando cada uno de estos registros dentro de su Business Entity para retornar finalmente a una coleccion de Business Entities, a quien haya utilizado el metodo generico que implementaste.
IEnumerable
Vale recalcar que es importante utilizar la clausula where TEntity : struct para poder instanciar el template TEntity dentro de la implementacion de dicha funcion y para poder castearlo a un ValueType, posteriormente.
No comments:
Post a Comment