创建 SQL Server 2008 数据库后,我在 Visual Studio 中创建了 Linq-to-SQL 架构。接下来,在.dbml
可视化编辑器中(在 Visual Studio 2010 中),我将 PK-to-FK 和 PK-to-PK 关联添加到架构中。
如何将我在 Visual Studio 中创建的那些关联复制到数据库中?换句话说,我如何与数据库同步?
创建 SQL Server 2008 数据库后,我在 Visual Studio 中创建了 Linq-to-SQL 架构。接下来,在.dbml
可视化编辑器中(在 Visual Studio 2010 中),我将 PK-to-FK 和 PK-to-PK 关联添加到架构中。
如何将我在 Visual Studio 中创建的那些关联复制到数据库中?换句话说,我如何与数据库同步?
Linq-to-SQL 是一个很棒的工具,但永远不要依赖它来更新架构。始终通过升级 SQL 脚本应用架构更改,这些脚本使用 DDL CREATE/ALTER/DROP 语句将部署的架构从磁盘版本更改为当前版本。通过这种方式,您可以将所有架构更改作为源文本文件进行版本控制,您可以从任何过去的版本升级到当前的应用程序版本,并且可以轻松测试所有升级路径,包括使用非常大的表升级部署。
更糟糕的替代方法是使用 SQL 比较工具,这些工具可以将您所需的架构与部署的架构进行比较,例如vsdbcmd。这可能适用于微不足道的部署,但是复制和重命名数百万条记录的表将很快显示出它的丑陋缺点。
您绝对不能做的是依赖 .dbml 文件作为架构的“主”副本。这是 Linq-to-SQL 倡导者通常忽略的一个小细节,当您尝试交付应用程序的 v2 并意识到您没有升级工具集时,您通常会发现这一点。