Pregunta

Me he encontrado a mí mismo cada vez más insatisfecho con el conjunto de datos/DataTable/DataRow paradigma .Net, sobre todo porque es a menudo un par de pasos más complicado de lo que realmente quiero hacer.En los casos donde estoy enlazando a los controles, los conjuntos de datos están bien.Pero en otros casos, parece ser que hay una buena cantidad de sobrecarga mental.

He jugado un poco con SqlDataReader, y que parece ser bueno para los simples paseos a través de un select, pero siento que puede haber algunos otros modelos que acechan en .Neta que son útiles para aprender más acerca de.Me siento como toda la ayuda que me encuentro en esta solo utiliza el conjunto de datos de forma predeterminada.Tal vez eso y DataReader realmente son las mejores opciones.

Yo no estoy buscando un mejor/peor de avería, solo por curiosidad, ¿cuáles son mis opciones y qué experiencias has tenido con ellos.Gracias!

-Eric Sipple

¿Fue útil?

Solución

Desde entonces .NET 3.5 salió, he utilizado exclusivamente LINQ.Es realmente buena;No veo ninguna razón para usar cualquiera de esas viejas muletas más.

Tan grande como LINQ es, sin embargo, creo que cualquier ORM sistema les permite hacer distancia con que dreck.

Otros consejos

Nos hemos alejado de los conjuntos de datos y construimos nuestro propio ORM objetos vagamente basada en CSLA.Usted puede conseguir el mismo trabajo realizado, ya sea con un conjunto de datos o LINQ o ORM, pero la re-uso es (la hemos encontrado) mucho más fácil.'Menos código a hacer más feliz'.

Yo estaba harto de los conjuntos de datos .Net 1.1, al menos optimizado, de manera que no lento como exponencialmente para grandes conjuntos de más.

Siempre fue un lugar hinchado modelo - no he visto muchas de las aplicaciones que utilizan la mayoría de sus características.

SqlDataReader era bueno, pero yo que se usa para envolver en un IEnumerable<T> donde la T era algún escrito de la representación de mi fila de datos.

Linq es un mejor reemplazo en mi opinión.

He estado usando el Objetos De Transferencia De Datos patrón (originalmente desde el mundo de Java, creo), con un SqDataReader para rellenar las colecciones de DTOs de la capa de datos para su uso en otras capas de la aplicación.Las organizaciones del narcotráfico son muy ligero y sencillo de clases compuesto de propiedades con obtiene/establece.Ellos pueden ser fácilmente serializar/deserializar, y se utiliza para el enlace de datos, por lo que muy bien adaptado a la mayoría de mis necesidades de desarrollo.

Yo soy un gran fan de Subsónico.Un escrito de lotes/archivo CMD puede generar todo un modelo de objetos para la base de datos en cuestión de minutos;usted puede compilar en su propio archivo DLL y utilizar cuando sea necesario.Maravilloso modelo, una herramienta maravillosa.El sitio hace que suene como una ASP.NET trato, pero en general funciona de maravilla en cualquier lugar si no estás tratando de usar su marco de interfaz de usuario (que estoy moderadamente decepcionado) o su aplicación a nivel de la auto-generación de herramientas.

Para el registro, aquí es una versión del comando puedo utilizar para trabajar con él (de modo que usted no tiene que luchar muy duro al principio):

sonic.exe generate /server [servername] /db [dbname] /out [outputPathForCSfiles] /generatedNamespace [myNamespace] /useSPs true /removeUnderscores true

Que hace cada vez ...Luego de generar la DLL fuera de ese directorio ... esto es parte de un NAnt proyecto, disparó por CruiseControl.NET -y allá vamos.Estoy usando que en WinForms, ASP.NET incluso algunos de la línea de comandos utils.Esto genera el menor número de dependencias y el mayor "portabilidad" (entre proyectos relacionados, por ejemplo).

Nota

El de arriba es ahora más de un año de edad.Mientras que todavía tienen un gran cariño en mi corazón para Subsónico, me he movido a LINQ to SQL cuando tengo el lujo de trabajar en .NET 3.5.En .NET 2.0, yo todavía uso Subsónico.Así que mi nuevo oficial consejo es versión de la plataforma-dependiente.En el caso de .NET 3+, ir con la aceptada respuesta.En el caso de .NET 2.0, ir con Subsónico.

Los conjuntos de datos son grandes para las demostraciones.

Yo no sabría qué hacer con uno, si usted me hizo uso de ella.

Yo uso ObservableCollection

A continuación, de nuevo estoy en la aplicación cliente de espacio, WPF y Silverlight.Por lo que pasar un dataset o datatable a través de un servicio de ...bruto.

DataReaders son rápidos, ya que son un sólo hacia adelante corriente del conjunto de resultados.

He utilizado escrito y sin tipo de conjuntos de datos, DataViewManagers, DataViews, tablas de datos, objetos datarow, DataRowViews, y casi cualquier cosa que usted puede hacer con la pila ya que se primicias salió en varios proyectos de empresa.Me tomó un tiempo para acostumbrarse a cómo permitir de trabajó.He escrito componentes personalizados que el apalancamiento de la pila como ADO.NETdid no darme lo que yo realmente necesitaba.Uno de dichos componentes compara conjuntos de datos y, a continuación, las actualizaciones de backend tiendas.Sé realmente cómo todos estos elementos funcionan bien y los que han visto lo que he hecho, son muy impresionado de que me las arreglé para conseguir más allá de no sentir que sólo era útil para la demostración de su uso.

Yo uso ADO.NET unión en Winforms y yo también uso el código en la consola de aplicaciones.Yo más recientemente se han unido con otro desarrollador para crear una costumbre ORM que hemos utilizado en contra de un loco datamodel que nos dieron de contratistas, que se parecía nada a nuestros normal almacenes de datos.

Busqué en el día de hoy para la sustitución de la ADO.NET y no veo nada de lo que yo debería tratar seriamente aprender a reemplazar lo que uso actualmente.

Yo los uso extensivamente, pero yo no hacer uso de cualquiera de los "avanzados" características que Microsoft estaba realmente empujando cuando el marco salió por primera vez.Estoy básicamente sólo las utilizan como Listas de tablas de hash, que me parece perfectamente útil.

No he visto buenos resultados cuando las personas han tratado de hacer complejos con los conjuntos de datos, o trató de establecer, de hecho, las relaciones de clave externa entre las tablas con los conjuntos de datos.

Por supuesto, yo soy una de las más raras que en realidad prefiere un DataRow a una entidad objeto de la instancia.

Pre linq he utilizado DataReader para llenar mi propia Lista personalizada de objetos de dominio, pero después de linq he estado usando L2S para llenar L2S entidades, o L2S para llenar los objetos de dominio.

Una vez que me pongo un poco más de tiempo para investigar sospecho que Entity Framework objetos va a ser mi nuevo favorito de la solución!

La selección de un moderno, estable, y apoyado activamente la herramienta ORM tiene que ser, probablemente, el mayor impulso a la productividad en casi cualquier proyecto de moderado tamaño y la complejidad puede conseguir.Si vas a la conclusión de que es absolutamente, absolutamente, absolutamente tiene que escribir su propio DAL y ORM, probablemente lo estés haciendo mal (o si está usando en el mundo más oscuro de la base de datos).

Si usted está haciendo raw conjuntos de datos y las filas y qué no, pasar el día para tratar de un ORM y usted se sorprenderá de lo mucho más productivo que puede ser w/s de todas las esclavitudes de la asignación de columnas a los campos o todo el tiempo de llenado de objetos de comando Sql y todos los otros aro de salto, estamos todos de una vez fue a través de.

Me encanta me Subsónico, aunque en menor escala de los proyectos, junto con demostraciones y/o prototipos, me parece Linq to Sql muy útiles también.Odio EF con una pasión aunque.:P

La he usado con los conjuntos de datos de varios proyectos.Que el modelo de la base de datos bien, exigir el cumplimiento de las restricciones en el lado del cliente, y en general son una sólida tecnología de acceso a datos, especialmente con los cambios .NET 2.0 con estos objetos.

Con los conjuntos de datos tienen una mala reputación de las personas que les gusta usar unas emotivas palabras como "hinchado" para describirlos.Voy a conceder que me gusta el uso de una buena O/R mapper más que el uso de conjuntos de datos;simplemente "se siente" mejor uso de objetos y colecciones, en lugar de escrito de tablas de datos, objetos datarow, etc.Pero lo que me he encontrado es que si por cualquier razón usted no puede o no desea utilizar una O/R mapper, con los conjuntos de datos son una buena opción sólida de que son lo suficientemente fácil de usar y le ayudará a hacer el 90% de los beneficios de una O/R mapper.

EDITAR:

Algunos sugieren que aquí DataReaders son la "rápida" de alternativa.Pero si usted utiliza un Reflector, para mirar en el interior de un DataAdapter (tablas de datos que son llenados), verás que se utiliza...un DataReader.Con Los Conjuntos De Datos puede tienen una mayor huella en la memoria que otras opciones, pero aún tengo que ver la aplicación en la que esto hace una diferencia tangible.

El uso de la mejor herramienta para el trabajo.No tomar su decisión sobre la base de unas emotivas palabras como "bruto" o "hinchado", que no tienen ninguna base real.

Acabo de construir mi negocio de objetos desde cero, y casi nunca uso la tabla de datos y en especial el conjunto de datos más, excepto para rellenar inicialmente los objetos de negocios.Las ventajas de la construcción de su propio son la capacidad de prueba, tipo de seguridad y intellisense, extensibilidad (trate de añadir a un conjunto de datos) y la legibilidad (a menos que a usted le gusta leer cosas como Convertir.ToDecimal(dt.Rows[i]["bla"].ToString())).

Si yo fuera más inteligente también me gustaría utilizar un ORM y la 3ª parte de DI marco, pero todavía no se ha sentido la necesidad de aquellos.Estoy haciendo un montón de pequeños proyectos de tamaño o adiciones a los proyectos de mayor envergadura.

Yo NUNCA uso de conjuntos de datos.Ellos son un gran peso pesado de los objetos sólo se pueden usar (como alguien señaló aquí) para "demoware".Hay mucho de los grandes alternativas que se muestra aquí.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top