Estamos en el comienzo de un proyecto de desarrollo muy largo con varios subproyectos. Básicamente, cada subproyecto tardará varios meses en desarrollarse. El código en sí se dividirá en varios proyectos C#, pero la base de datos física será compartida por todos los proyectos.DAL futuros de prueba
El problema es la capacidad de mantenimiento. Si agregamos una columna a una tabla, o dividimos una tabla en dos tablas más pequeñas, tendremos que retroceder y modificar nuestro C# DAL para respaldar estos cambios. Esto no es aceptable, ya que constantemente adaptaremos el DB a las necesidades de la empresa como un todo, y no solo a las necesidades de un solo programa. Cambiar constantemente el código antiguo sería una tarea interminable.
Nuestra gente de DB sugirió una vista diferente. Hacemos todo nuestro CRUD a través de procedimientos almacenados, y usamos Linq en varias tablas para realizar nuestras declaraciones SELECT. Entonces, si reestructuramos el DB dentro de varios años, podemos simplemente suministrar los mismos procs y vistas almacenados y no tener que modificar nuestro código anterior.
La pregunta que tenemos, ¿qué ORM se debe utilizar para algo como esto? EF parece un poco exagerado (tal vez no lo es). ¿Algo así como SubSonic con su plantilla T4 permitirá un DAL simpliler (y quizás más rápido)?
¿O quizás alguien tiene una idea sobre cómo hacer que todo este proceso sea menos doloroso? Preferimos no agregar otra capa a nuestra aplicación, pero tampoco queremos volver atrás y modificar el código cada vez que hacemos un cambio de db.
Edit 1: Así que cuando dije "realmente no quiero agregar más capas". Esto es principalmente porque ya tenemos varias capas. Tenemos vistas de Silverlight, modelos de vista, objetos BLL (a través de CSLA), luego tenemos el DAL y, finalmente, las tablas SQL que se muestran a continuación.
Entonces, al tratar de tener un Esquema que les sirva a todos, básicamente llegarás al modelo que menos apesta. Siempre me pregunto cómo las personas pueden esperar cambiar la base de datos sin tocar las aplicaciones que acceden a ella. Esto parece surrealista. – flq
La integración a través de la base de datos pasó de moda a finales de los 70. A menos que estés usando un OODB como Gemstone. –
¿Soy el único que piensa que esta pregunta tendrá muchas vistas y muchas respuestas, pero no realmente útiles? –