2009-11-11 33 views
6

esto sólo puede ser un sí o un no tipo de pregunta, pero aquí va de todos modos ...ASP.Net MVC: Mejores prácticas para archivos DBML

De todo (bueno la mayoría) de los ejemplos que he visto para utilizando mvc, parece que el método para crear el archivo dbml es simplemente colocar todo el esquema de la base de datos en él y dejar que genere automáticamente todo el linq a sql bondad. Parece que solo necesitas uno de estos (ya que no puedes tener tablas duplicadas en archivos dbml separados en el mismo proyecto) pero por alguna razón parece que hay una mejor manera de hacerlo ... especialmente cuando se trata de un proyecto grande que tiene un buen número de tablas.

¿Así que esta es la forma correcta de crear un archivo dbml para usar en un proyecto de mvc, simplemente colocar toda la estructura de la tabla e ir a la ciudad? Si no, ¿cómo lo haces?

+0

duplicados: http://stackoverflow.com/questions/3468722/update-dbml-file, http://stackoverflow.com/questions/33664/ best-practices-for-manage-linq-to-sql-dbml-files –

Respuesta

3

Si el esquema era grande, creo que confiaría totalmente en un script SQLMetal para generar mis clases * .dbml y de respaldo. De esta forma, puede regenerar todo su modelo de datos siempre que su base de datos se actualice. De lo contrario, si una tabla, vista, etc. se actualiza en la base de datos, no tiene que eliminar y luego arrastrar y soltar esa tabla en su archivo visual * .dbml.

En realidad, no soy experto con SQLMetal, pero creo que incluso puede usarlo para generar todo lo que necesita para Linq-toSql y ni siquiera requerir/generar un archivo * .dbml.

+1

Yep SQLMetal es el camino a seguir para esto. – stimms

+1

¡Eso es realmente útil, ni siquiera sabía que SQLMetal existía! ¿Cómo es que un producto con un nombre tan genial pasa tan desapercibido? – onekidney

0

Todavía no estoy seguro - es un problema que todavía estoy trabajando en pero yo creo que la respuesta es que debería ser deseable tener varios archivos DBML - Efectivamente vistas de los datos - entonces usted quiere alojar los archivos dbml en sus propios proyectos para que pueda tener las cosas similares en varios espacios de nombres y no tener conflictos.

En este caso, el siguiente paso lógico es colocar los archivos/modelos de dbml en sus propios proyectos de manera predeterminada y aprender a trabajar con ellos cuando se configuren de esa manera. Esto también ayudará a la reutilización de un modelo de base de datos donde tiene más de una aplicación interactuando con esa base de datos.

Ciertamente hay problemas para separar la cosa y también para tener múltiples archivos dbml en un solo proyecto (en términos de asegurar que las extensiones a las clases se implementen de forma concomitante en todas las instancias, por ejemplo) pero tengo un caso donde no es inapropiado

Buena pregunta, la respuesta probablemente tiende a ser "sólo uno", pero no en todos los casos ...

+0

sí - esa es la forma en que comenzamos a escribir todo (utilizando dbml por separado para diferentes modelos lógicos) pero nos encontramos con demasiados problemas con relaciones superpuestas. Me alegra saber que alguien más esté lidiando con lo mismo. :) – onekidney

0

personalmente prefiero para crear las clases/asociación en el .dbml y luego generar la base de datos de eso.

Simplemente añadir la siguiente clase a su proyecto

partial class MyDataContext { 
    partial void OnCreated() { 
     if (!DatabaseExists()) 
      CreateDatabase(); 
     } 
} 
Cuestiones relacionadas