2008-11-14 17 views
6

He heredado una aplicación bastante grande que realmente podría usar algo de limpieza. Hay un código de acceso a datos en toda la aplicación. En los códigos subyacentes, algunos en las clases de lógica de negocios, algunos en línea en las páginas asp clásicos.Crea automáticamente clases de contenedor C# alrededor de procedimientos almacenados

Lo que me gustaría hacer es refactorizar este código, eliminando todo el código de acceso a datos en algunas clases DAL.

Todo el acceso a los datos se realiza a través de procedimientos almacenados (Microsoft SQL 2000). Hay 300-400 de ellos.

Parece que debe haber una forma automática de analizar los procedimientos de almacenamiento y generar automáticamente métodos C# para cada uno de ellos, asignando los parámetros de Método a los parámetros de procedimiento almacenados, con un método que devuelve una tabla de datos.

No tengo ninguna experiencia con productos ORM, y no estoy seguro de si lo que estoy buscando es un ORM completo, o simplemente una utilidad de terceros que ayudará a generar envoltorios simples alrededor de las llamadas sp .

Respuesta

2

Si usted tiene acceso a .NET Framework 3.5 y LINQ to SQL, puede hacerlo muy fácilmente, comprobar este video:

LINQ to SQL: Using Stored Procedures

Usando procedimientos existentes almacenados y funciones es fácil con LINQ. Simplemente arrastre los procedimientos almacenados a la superficie de mapeo O/R y llámelos desde el el objeto Contexto de datos generado.

2

Le recomiendo que obtenga una bodega de Code Smith. El producto incluye una plantilla para ORM y es totalmente compatible con la generación de clases de DB Schemas (y creo que Procs). A continuación, puede codificar Gen todos los objetos que necesita.

Otra opción sería usar LINQ to SQL.

0

arrastrando y soltando los procedimientos almacenados en una superficie de diseño conjunto de datos (en .NET 2.0 y superior) genera una función de envoltura

pero si usted tiene un montón de ellos para hacer, usted podría ser mejor usar o la escritura un generador de código simple

dos opciones para esto:

  1. generar el código de envolver a sí mismo como clases de C#/métodos
  2. generar un archivo DataSet.xsd luego abrirlo en visual Studio y dejar que el diseñador de generar las clases/métodos para usted

este último se puede mantener a través de la superficie de diseño conjunto de datos, pero puede ser difícil de conseguir generada derecha (la primera vez)

1

Mi enfoque sería primero piense en un nivel más alto: cree sus clases y métodos de acceso a datos de la mejor manera que pueda para satisfacer sus necesidades para su código actual o nuevo. Luego, use las llamadas a procedimientos existentes para sus nuevos objetos.

No creo que deba considerar ninguna forma de automatización masiva para esta tarea.

0

Al igual que la sugerencia de Robert, hemos escrito nuestra propia versión de Code Smith.

Nuestro "Generador de código" tiene dos partes: SQL & Clases.

SQL: Generará la actualización, seleccione & Eliminar los procesos almacenados.

C#: generará las clases y guardar el archivo como un .cs

Llamamos: sp_MShelpcolumns 'nombredetabla' para obtener una lista de campos y tipos de datos y luego hacer una sustitución.

No es una solución perfecta, pero es muy eficaz para conseguir el primer 80% de avance

Cuestiones relacionadas