Red de conocimiento informático - Conocimiento informático - Para crear objetos utilizando la interfaz común de ADO.NET

Para crear objetos utilizando la interfaz común de ADO.NET

Otro beneficio de utilizar la interfaz universal ADO.NET es que se puede heredar para crear un conjunto de datos fuertemente tipado. Los beneficios de los conjuntos de datos fuertemente tipados incluyen la verificación en tiempo de diseño y el llenado de declaraciones de Visual Studio .NET de conjuntos de datos fuertemente tipados.

El uso relacionado de la interfaz general de ADO.NET sigue siendo relativamente común. He realizado un estudio en profundidad sobre el uso de ADO.NET DbProviderFactories y su expansión para que sea compatible con MySQL. . ADO.NET 2.0 introduce un modelo de fábrica de proveedores y clases base comunes para varias clases de ADO.NET.

Limitaciones de la interfaz general de ADO.NET: la interfaz no es fácil de ampliar, ADO.NET1.1 no puede crear instancias de ciertas clases y ADO.NET1.1 no puede determinar los proveedores de datos .NET disponibles . Proporcione cómo el modelo de fábrica resuelve las limitaciones anteriores y amplía los modelos ADO y NET mediante la acumulación de abstracciones.

Utilice la clase ADO.NET DbProviderFactories para crear objetos. Debido a las limitaciones del modelo de fábrica de proveedores, muchas estructuras de consulta son específicas de la base de datos. Al configurar CommandText para una consulta parametrizada, es posible que deba proporcionar un código específico del programa, y ​​especificar el tipo de datos del parámetro puede requerir que se proporcione un código específico del programa. Para que el código desarrollado sea universal.

Sin limitarnos a una base de datos específica, decidimos utilizar el SQL estándar de DbProviderFactory en este desarrollo para desarrollar un paquete adecuado para mysql y sqlserver. Sin embargo, DbProviderFactories no proporciona soporte para DbProviderFactory de mysql, por lo que debe serlo. ampliado La interfaz general de ADO.NET es compatible con mysql, y en ADO.net 2.0, el ParameterMarkerFormat de mysql y sqlserver tiene errores. Por lo tanto, la interfaz general de ADO.NET extiende la clase para resolver este error.

clase estática pública DbProviderFactoriesEx

{

clase estática pública DbProviderFactory GetFactory(nombre del proveedor de cadena)

{

if (nombredelproveedor == null) throw new ArgumentNullException("nombredelproveedor");

DbProviderFactory dbFactory; switch (nombredelproveedor)

{

case "MySql.Data. MySqlClient": devuelve nuevo MySqlClientFactory(); predeterminado: devuelve DbProviderFactories.GetFactory(nombredelproveedor);

}

}

cadena estática pública GetParameterMarkerFormat(conexión DbConnection)

{

if (conectar == null)

lanzar nueva ArgumentNullException("conectar");

Tipo tipo = conectar. GetType();

if (type == typeof(MySql.Data.MySqlClient.MySqlConnection))

return "?{0}" //error de mysql

if (type == typeof(System.Data.SqlClient.SqlConnection))

return "@{0}"; //ms error connect.Open();

resultado de cadena = connect.GetSchema("DataSourceInformation").Rows[0]["ParameterMarkerFormat"].ToString();

connect.Close(); devuelve resultado;

}

}