Probablemente me encargaré de portar una aplicación vb6 a C#. Esta aplicación es una aplicación de Windows que interactúa con un acceso db. El acceso a los datos está encapsulado en objetos comerciales básicos. Una clase para una mesa básicamente. Los objetos comerciales vb6 existentes leen y escriben en el DB a través de DAO. He escrito DALs y ORMs varias veces antes, pero todos se dirigieron solo a SQL Server. Éste tendrá que dirigirse al servidor de acceso y sql. En proyectos anteriores, colocaba las cadenas de SQL en las partes privadas del objeto de negocio y tal vez movía el código sql redundante, como conectar, crear comando, en una clase base común para reducir el código.¿Dónde colocas declaraciones SQL en tus proyectos de C#?
Esta vez, estoy pensando en escribir las cadenas de SQL en un archivo .settings o en algún otro archivo de texto de tipo clave/valor. Luego escribo una utilidad sql para editar este archivo y me permite ejecutar y probar las consultas parametrizadas. Estas consultas se referenciarán por nombre en el objeto comercial en lugar de incrustar el sql en el código.
Sé que un enfoque estándar es crear un DAL para cada base de datos dirigida y tener el estado de configuración que DAL utilizar. Realmente no quiero crear las dos clases DAL para cada base de datos. Parece que sería menos código si solo hiciera referencia a la consulta correcta por nombre clave y tuviera el tipo de conexión correcto.
Entonces, ¿ustedes están haciendo cosas como esta? ¿Cómo o si abordaste este problema? ¿Qué funciona mejor para usted?
Gracias!
He utilizado este enfoque y me gusta. A diferencia de la mayoría de las personas, no estoy de acuerdo con poder cambiar el código sobre la marcha en tiempo de ejecución, incluso declaraciones SQL simples, por lo que el hecho de que esté compilado con el ensamblado es una ventaja para mí. – Chris
¡Me alegra oír que otros usuarios están utilizando y aceptando este enfoque! :-) Y estoy de acuerdo, a veces hornear cosas en tus bits compilados es una ventaja. –
En lugar de namespacePart, use this.GetType(). Namespace para la versión actual, dinámica y typeof (Program) .Namespace para static. Por supuesto, cuando lo pones en la clase de programa como estático. No olvide, cuando su archivo SQL está en el directorio SQL, consulte "SQL.StatementName.sql" – Harry