2011-02-07 11 views
9

¿Qué se entiende por conjuntos de datos fuertemente tipados en .Net? ¿Alguien puede explicarlo con un ejemplo claro y breve?Conjuntos de datos fuertemente tipados contra conjuntos de datos débilmente tipados

Y también, ¿cuál es la diferencia entre los conjuntos de datos fuertemente tipados y los de tipo débilmente tipados?

+0

Personalmente, no estoy seguro de que recomiendo * tampoco * en la mayoría del código; a menos que usted sea a: utilizando SqlBulkCopy desde la memoria, o b: escribiendo una herramienta de consulta genérica como SSMS ... –

+1

¿Ha intentado mirar MSDN en esto? http://msdn.microsoft.com/en-us/library/esbykkzb(v=VS.100).aspx –

+0

Ambos describen cosas que no debes usar. Debería usar ORM en su lugar :) – Stilgar

Respuesta

3

supongo que la distinción va así:

conjuntos de datos son de tipo firme, donde el conjunto de datos conoce el tipo asociado a cada columna antes o en el conjunto de datos está lleno.

Los conjuntos de datos débilmente tipados obligan al conjunto de datos a adivinar cuál podría ser el tipo. En los casos en que una columna puede ser nula O un número, el conjunto de datos podría adivinar de forma incorrecta que el tipo previsto es una cadena y no una cadena int nullable.

+0

Un conjunto de datos (mecanografiados o no) no tendrá que adivinar los tipos de datos. –

9

Los conjuntos de datos fuertemente tipados se generan sobre la base de un esquema de Db. Consisten en clases derivadas de DataSet, DataTable y DataRow. Las columnas Db se convierten en propiedades correctamente tipadas de la clase derivada TableRow.

Un Dataset sin par simplemente significa el uso directo de Dataset, no de un descendiente. Todo el acceso a la columna tiene que ser de tipo moldeado.

No existe un conjunto de datos débilmente tipeados.

7

TIPIFICADOS Versus sin tipo Conjuntos de datos A mecanografiado conjunto de datos es un conjunto de datos que se deriva primero de la clase DataSet base y luego utiliza información del diseñador del conjunto de datos, que se almacena en una. archivo xsd, para generar una nueva clase de conjunto de datos fuertemente tipado. La información del esquema (tablas, columnas, etc.) se genera y compila en esta nueva clase de conjunto de datos como un conjunto de objetos y propiedades de primera clase. Como un conjunto de datos tipeados hereda de la clase DataSet base, la clase tipada asume toda la funcionalidad de la clase DataSet y se puede usar con métodos que toman una instancia de una clase DataSet como un parámetro

Un conjunto de datos sin tipo, en contraste , no tiene un esquema incorporado correspondiente. Al igual que en un conjunto de datos tipeados, un conjunto de datos sin tipo contiene tablas, columnas, etc., pero están expuestos solo como colecciones. (Sin embargo, después de crear manualmente las tablas y otros elementos de datos en un conjunto de datos sin tipo, puede exportar la estructura del conjunto de datos como un esquema mediante el método WriteXmlSchema del conjunto de datos.)

contraste de acceso a datos en el mecanografiado y conjuntos de datos sin tipo La clase para una el conjunto de datos tipeado tiene un modelo de objetos en el que sus propiedades toman los nombres reales de las tablas y columnas.Por ejemplo, si se está trabajando con un conjunto de datos con tipo, puede hacer referencia a una columna utilizando código como el siguiente:

C# VBCopy

// This accesses the CustomerID column in the first row of the Customers table. 
string customerIDValue = northwindDataSet.Customers[0].CustomerID; 

J # Copiar

// This accesses the CustomerID column in the first row of the Customers table. 
String customerIDValue = 
    northwindDataSet.get_Customers().get_Item(0).get_CustomerID(); 

En contraste , si se está trabajando con un conjunto de datos sin tipo, el código equivalente es:

C# VBCopy

string customerIDValue = (string) 
    dataset1.Tables["Customers"].Rows[0]["CustomerID"]; 

J # Copiar

String customerIDValue = (String) 
    dataset1.get_Tables().get_Item("Customers").get_Rows().get_Item(0).get_Item("CustomerID"); 

acceso con tipo no sólo es más fácil de leer, pero es totalmente compatible con IntelliSense en el editor de código de Visual Studio. Además de ser más fácil de trabajar, la sintaxis para el conjunto de datos tipeados proporciona verificación de tipos en tiempo de compilación, reduciendo en gran medida la posibilidad de errores al asignar valores a los miembros del conjunto de datos. Si cambia el nombre de una columna en su DataSet y luego compila su aplicación, recibirá un error de compilación. Al hacer doble clic en el error de compilación en la Lista de tareas, puede ir directamente a la línea o líneas de código que hacen referencia al nombre de la columna anterior. El acceso a tablas y columnas en un conjunto de datos tipeados también es un poco más rápido en tiempo de ejecución porque el acceso se determina en tiempo de compilación, no a través de colecciones en tiempo de ejecución.

Aunque los conjuntos de datos tipeados tienen muchas ventajas, hay una variedad de circunstancias en las que un conjunto de datos sin tipo es útil. El escenario más obvio es cuando no hay un esquema disponible para el conjunto de datos. Esto podría ocurrir, por ejemplo, si su aplicación está interactuando con un componente que devuelve un conjunto de datos, pero usted no sabe de antemano cuál es su estructura. De forma similar, hay momentos en los que trabaja con datos que no tienen una estructura estática y predecible; en ese caso, no es práctico utilizar un conjunto de datos tipeados, ya que tendría que volver a generar la clase de conjunto de datos tipeados con cada cambio en la estructura de datos.

De manera más general, hay muchas ocasiones en las que puede crear un conjunto de datos dinámicamente sin tener un esquema disponible. En ese caso, el conjunto de datos es simplemente una estructura conveniente en la que puede guardar información, siempre que los datos se puedan representar de una manera relacional. Al mismo tiempo, puede aprovechar las capacidades del conjunto de datos, como la capacidad de serializar la información para pasarla a otro proceso o escribir un archivo XML.

Cuestiones relacionadas