Compartir a través de


Utilizar DataConnection y TypedDataTable

En muchos escenarios, el uso de DataConnection proporciona un mejor rendimiento y consume menos memoria que el uso de TypedDataTable. Sin embargo, TypedDataTable puede ser necesario en algunos casos debido a ciertas restricciones en el uso de DataConnection. En algunos otros casos, el uso de TypedDataTable puede producir un mejor rendimiento que el uso de DataConnection. En este tema se describen los criterios y factores que se deben tener en cuenta para elegir el enfoque adecuado.

Cuándo utilizar TypedDataTable en lugar de DataConnection

Utilice TypedDataTable en lugar de DataConnection en los casos siguientes:

  • Es necesario realizar cambios en los datos, pero la tabla no posee una clave principal. Para realizar cambios en los datos mediante DataConnection, se requiere una clave principal. Por lo tanto, si no hay ninguna clave principal, TypedDataTable es el único enfoque viable.

    Nota

    El motor de reglas solo actualiza los valores en memoria de un TypedDataTable. Es el usuario que llama quien debe hacer permanentes estos cambios.

  • La selectividad es alta, lo que significa que un alto porcentaje de filas de la tabla pasará las pruebas especificadas como condiciones de reglas. En este caso, DataConnection no proporciona mucha ventaja y puede funcionar peor que TypedDataTable.

  • Por regla general, se trata de una tabla pequeña que contiene menos de 500 filas. Tenga en cuenta que este número puede variar en función de la forma de regla y de la memoria que esté disponible en el motor de reglas.

  • El comportamiento del encadenamiento de reglas se encuentra en un conjunto de reglas. No se admite la llamada a la función Update en dataConnection , pero puede invocar DataConnection.Update en una regla mediante un método auxiliar. Cuando se requiere el encadenamiento de reglas, TypedDataTable es una mejor opción.

  • Una o varias columnas de la tabla contienen una gran cantidad de datos que no resultan de utilidad para las reglas. Un ejemplo podría ser una base de datos de imágenes, donde las columnas contienen la imagen (una gran cantidad de datos), el nombre, la fecha, etc. Si la imagen no es necesaria, seleccione únicamente las columnas que utilizarán las reglas. Por ejemplo, emitir una consulta como "SELECT Name, Date from TABLE" puede ser más eficaz que usar DataConnection.

  • Si muchas reglas necesitan o actualizan la misma fila de base de datos, con typedDataTable, la fila se comparte entre todas las reglas y si la condición es la misma (por ejemplo, Table.Column == 5), se puede optimizar la evaluación de la condición. Con una clase DataConnection, en general, se genera una consulta para cada regla que usa DataConnection. Aunque las filas se reutilizan (si la tabla tiene una clave primaria), pueden generarse varias consultas para obtener los mismos datos cada vez.

Cuándo utilizar DataConnection en lugar de TypedDataTable

Utilice DataConnection en lugar de TypedDataTable en los siguientes casos:

  • La tabla contiene un gran número de filas, pero la selectividad es baja; solo un pequeño porcentaje de filas cumplirá las condiciones de la regla.

  • Solo existe una tabla de base de datos grande y el resto de objetos que se utilizan en la regla poseen un número reducido de instancias. En el peor de los casos, el número de consultas que se ejecutan en la base de datos coincide con la suma de todas las instancias utilizadas en la regla.

  • Las reglas están formadas exclusivamente por condiciones conjuntivas y en ellas se utilizan objetos ajenos a la tabla de base de datos.

Consulte también

Acceso a datos en el motor de reglas de negocio