Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将LINQ与SQL Server数据库同步到SQL DBML架构_Sql Server_Visual Studio 2010_Linq To Sql_Database Schema - Fatal编程技术网

Sql server 将LINQ与SQL Server数据库同步到SQL DBML架构

Sql server 将LINQ与SQL Server数据库同步到SQL DBML架构,sql-server,visual-studio-2010,linq-to-sql,database-schema,Sql Server,Visual Studio 2010,Linq To Sql,Database Schema,在创建SQLServer2008数据库之后,我在VisualStudio中创建了一个Linq到SQL模式。接下来,在.dbml可视化编辑器(在VisualStudio2010中)中,我将PK添加到FK中,并将PK到PK关联添加到模式中 如何将我在Visual Studio中创建的关联复制到数据库中?换句话说,我如何与数据库同步?Linq to SQL是一个很好的工具,但永远不要依赖它来更新模式。始终通过升级SQL脚本应用架构更改,这些脚本使用DDL CREATE/ALTER/DROP语句更改已部

在创建SQLServer2008数据库之后,我在VisualStudio中创建了一个Linq到SQL模式。接下来,在
.dbml
可视化编辑器(在VisualStudio2010中)中,我将PK添加到FK中,并将PK到PK关联添加到模式中


如何将我在Visual Studio中创建的关联复制到数据库中?换句话说,我如何与数据库同步?

Linq to SQL是一个很好的工具,但永远不要依赖它来更新模式。始终通过升级SQL脚本应用架构更改,这些脚本使用DDL CREATE/ALTER/DROP语句更改已部署的架构。通过这种方式,您可以将所有架构更改作为源文本文件置于版本控制之下,您可以从任何以前的版本升级到当前的应用程序版本,并且可以轻松测试所有升级路径,包括使用非常大的表升级部署

更糟糕的选择是使用SQL比较工具,这些工具可以将所需的模式与部署的模式区分开来,如。这可能适用于琐碎的部署,但复制和重命名数百万条记录的表将很快显示出其丑陋的缺点


您绝对不能依赖.dbml文件作为模式的“主”副本。这是Linq-to-SQL倡导者通常忽略的一个小细节,当您尝试交付应用程序的v2并意识到您没有升级工具集时,通常会发现这个细节。

Linq-to-SQL是一个很棒的工具,但永远不要依赖它来更新模式。始终通过升级SQL脚本应用架构更改,这些脚本使用DDL CREATE/ALTER/DROP语句更改已部署的架构。通过这种方式,您可以将所有架构更改作为源文本文件置于版本控制之下,您可以从任何以前的版本升级到当前的应用程序版本,并且可以轻松测试所有升级路径,包括使用非常大的表升级部署

更糟糕的选择是使用SQL比较工具,这些工具可以将所需的模式与部署的模式区分开来,如。这可能适用于琐碎的部署,但复制和重命名数百万条记录的表将很快显示出其丑陋的缺点


您绝对不能依赖.dbml文件作为模式的“主”副本。这是Linq to SQL倡导者通常忽略的一个小细节,当您尝试交付应用程序的v2时,通常会发现这个细节,并且意识到您没有升级工具集。

那么,我应该从这里做什么呢?我在表中还没有任何记录,因为我刚刚开始开发这个应用程序。我将告诉您我是如何做到的:我创建了一个SQL文本文件,其中包含部署应用程序v1的脚本。该文件作为资源嵌入到我的应用程序中,当我启动时,我会运行该脚本(将其转换为一系列GO分离的批,然后运行每个批)。然后,随着应用程序的发展,我将添加一个脚本,将数据库从v1升级到v1.2,然后为v1.3添加一个新脚本。当我发布应用程序的新版本时,我只需添加一个新的升级脚本。部署新应用程序时,它会检查当前架构版本并运行所有中间升级。链接到中介绍了所有这些。除了执行升级脚本和增加模式版本之外,我从不更改数据库模式中的任何内容。但是,如果从后台运行脚本,如何保持dbml的同步?@Luke:code generation。将模式提取到XML中,运行XSLT生成代码。将XML生成和XSLT转换都作为.CSPROJ构建过程()的一部分?我在表中还没有任何记录,因为我刚刚开始开发这个应用程序。我将告诉您我是如何做到的:我创建了一个SQL文本文件,其中包含部署应用程序v1的脚本。该文件作为资源嵌入到我的应用程序中,当我启动时,我会运行该脚本(将其转换为一系列GO分离的批,然后运行每个批)。然后,随着应用程序的发展,我将添加一个脚本,将数据库从v1升级到v1.2,然后为v1.3添加一个新脚本。当我发布应用程序的新版本时,我只需添加一个新的升级脚本。部署新应用程序时,它会检查当前架构版本并运行所有中间升级。链接到中介绍了所有这些。除了执行升级脚本和增加模式版本之外,我从不更改数据库模式中的任何内容。但是,如果从后台运行脚本,如何保持dbml的同步?@Luke:code generation。将模式提取到XML中,运行XSLT生成代码。使XML生成和XSLT转换都成为.CSPROJ构建过程()的一部分。