Cuando escribo una aplicación, utilizo las interfaces System.Data (IDbConnection, IDbCommand, IDataReader, IDbDataParameter, etc ...). Lo hago para reducir las dependencias de los proveedores. A menos que haga una aplicación de prueba simple, parece ser lo ético que se debe hacer cuando se consulta.IdbConnection vs. SqlConnection
Sin embargo, parece que todo el código que veo utiliza las clases de espacio de nombres System.Data.SqlClient u otras clases específicas del proveedor. En revistas y libros, es fácil atribuir esto a la influencia de Microsoft y su estrategia de marketing para programar solo contra SQLServer. Pero parece que casi todo el código .NET que veo utiliza las clases específicas de SQLServer.
Me doy cuenta de que las clases específicas del proveedor tienen más funcionalidad, por ejemplo, agregar un parámetro a un objeto SqlCommand es un método, mientras que agregarlo a un IDbCommand es irritante 4+ líneas de código. Pero entonces de nuevo; escribir una pequeña clase de ayuda para estas limitaciones es bastante simple.
También me he preguntado si la programación en contra de las interfaces cuando SQLServer es el cliente objetivo actual es una sobreingeniería ya que no se requiere de inmediato. Pero no creo que sea así, ya que el costo de programación frente a las interfaces es muy bajo, mientras que la reducción de la dependencia del proveedor proporciona un beneficio tan grande.
¿Utiliza clases de datos específicas del proveedor o las interfaces?
EDITAR: Para resumir algunas de las respuestas a continuación, e invertir algunas reflexiones que tuve al leerlas.
posibles peligros en el uso de interfaces para el vendedor neutralidad: palabras clave específicas
- proveedores incrustados en instrucciones SELECT (todos mis ins, UPD, & Del'S están en procsos, así que eso es no es un problema)
- Enlazando directamente la base de datos probablemente causaría problemas.
- A menos que su conexión la instanciación esté centralizada, la clase específica del proveedor necesitará llamar a de todos modos.
razones positivas para utilizar interfaces:
- En mi experiencia, la capacidad (incluso si no se ejerce ) para mover a un proveedor diferente siempre ha sido apreciado por el cliente.
- utilizan interfaces en las bibliotecas de código reutilizable
Los objetos db tendrían que estar por lo menos "ajustados". Pero no tomé en cuenta las optimizaciones y las palabras clave específicas del vendedor en el SQL. Además, en la capa de sintaxis que mencionaste, ¿eso escribe tu SQL? Si es así, ¿ha valido la pena? Nunca he tenido que pagar esto antes. –