Asp.net mvc ASP.NETMVC:dbml文件的最佳实践

Asp.net mvc ASP.NETMVC:dbml文件的最佳实践,asp.net-mvc,linq-to-sql,Asp.net Mvc,Linq To Sql,这可能只是一个“是”或“否”类型的问题,但不管怎样,还是这样 从我所看到的所有(大多数)使用mvc的示例来看,创建dbml文件的方法似乎只是将数据库的整个模式放入其中,并让它自动生成所有linq到sql。看起来您只需要其中一个(因为在同一个项目中,不同的dbml文件中不能有重复的表),但出于某种原因,似乎有更好的方法来实现这一点……尤其是在处理具有相当多表的大型项目时 那么,这是创建一个用于mvc项目的dbml文件的正确方法吗?只需将整个表结构放到其中,然后就可以了?如果不是,你怎么做?如果模式

这可能只是一个“是”或“否”类型的问题,但不管怎样,还是这样

从我所看到的所有(大多数)使用mvc的示例来看,创建dbml文件的方法似乎只是将数据库的整个模式放入其中,并让它自动生成所有linq到sql。看起来您只需要其中一个(因为在同一个项目中,不同的dbml文件中不能有重复的表),但出于某种原因,似乎有更好的方法来实现这一点……尤其是在处理具有相当多表的大型项目时


那么,这是创建一个用于mvc项目的dbml文件的正确方法吗?只需将整个表结构放到其中,然后就可以了?如果不是,你怎么做?

如果模式很大,我想我将完全依赖脚本来生成我的*.dbml和支持类。这样,只要数据库更新,就可以重新生成整个数据模型。否则,如果数据库中的表、视图等得到更新,则不必删除,然后将该表重新拖放到visual*.dbml文件中


实际上,我不是SQLMetal的专家,但我认为您甚至可以使用它来生成Linq toSql所需的所有内容,甚至不需要/生成*.dbml文件。

我还不确定-这是一个我仍在研究的问题,但我认为答案是,如果希望有多个dbml文件-有效地查看您的数据-那么您希望在他们自己的项目,这样您就可以在多个名称空间中拥有相似的东西,而不会让它们发生冲突

在这种情况下,下一个逻辑步骤是在默认情况下将您的dbml文件/模型放入它们自己的项目中,并在以这种方式设置时学习如何使用它们。这还将有助于重用数据库模型,其中您有多个应用程序与该数据库交互

当然,将这些东西分离出来以及在单个项目中使用多个dbml文件(例如,在确保在所有实例中都可以实现类的扩展方面)也存在一些问题,但我有一个例子说明这并不合适


好问题,答案可能倾向于“只有一个”,但不是在所有情况下…

我个人更喜欢在.dbml中创建类/关联,然后从中生成数据库

只需将以下类添加到项目中

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

是的,SQLMetal是实现这一点的方法。这真的很有帮助,我甚至不知道SQLMetal的存在!一个名字这么酷的产品怎么会这么不被人注意呢?是的-这就是我们开始编写所有东西的方式(对不同的逻辑模型使用单独的dbml),但是遇到了太多的重叠关系问题。很高兴知道其他人也在处理同样的事情。:)被骗者:,