C# 如何处理LINQ到SQL模式的更改

C# 如何处理LINQ到SQL模式的更改,c#,wpf,linq-to-sql,visual-studio-2012,wix,C#,Wpf,Linq To Sql,Visual Studio 2012,Wix,我正在创建一个WPF项目,使用LINQtoSQL和WiX进行部署 我不确定如何处理应用程序的次要或主要更新之间的数据库模式更改 例如,如何处理将已部署的v1.0.0.0应用程序更新为v1.0.1.0,这需要对现有数据库进行模式更改(新的或修改的类)。如果我只是部署更新后的应用程序,它将崩溃,因为现有的数据库模式与新代码不匹配 根据我的研究,我认为简化的过程应该是使用类似的方法在v1.0.0.0和v1.0.1.0数据库之间生成SQL ALTER脚本,并在WiX升级期间执行这些更改脚本,但似乎会有一

我正在创建一个WPF项目,使用LINQtoSQL和WiX进行部署

我不确定如何处理应用程序的次要或主要更新之间的数据库模式更改

例如,如何处理将已部署的v1.0.0.0应用程序更新为v1.0.1.0,这需要对现有数据库进行模式更改(新的或修改的类)。如果我只是部署更新后的应用程序,它将崩溃,因为现有的数据库模式与新代码不匹配

根据我的研究,我认为简化的过程应该是使用类似的方法在v1.0.0.0和v1.0.1.0数据库之间生成SQL ALTER脚本,并在WiX升级期间执行这些更改脚本,但似乎会有一种更“内置”的方法来更优雅地处理此问题(这并没有给人带来很多信心)

在WiX或Visual Studio中是否完全可以检测/跟踪/部署数据库更改

编辑:

我应该注意到,当前当我们对代码进行更改时,我们(至少在开发人员的世界中)只是在运行时删除并重新创建/重新填充带有默认数据的数据库,这样LINQ to SQL
CreateDatabase()
就可以根据新代码创建模式

我看到很多人提到使用SQLMetal生成dbml文件,但我没有为我的数据库使用任何类型的设计器,如果你愿意的话,我们是在“先编写代码”。这就是我感到困惑的地方;那么我必须使用dbml方法吗


我已经看过Linq-to-Sql数据库同步开源项目(和),但其中一个不支持Sql 2012,其他错误是不支持时间戳类型和其他需要我进行大量定制的错误。

我现在决定采用的解决方案如下:

部署v1时,将数据库另存为“dbv1”

部署v2时,将数据库另存为“dbv2”,并在
visualstudio>SQL>Schema Compare>New Comparison

来源:dbv1,目标:dbv2

生成脚本(Shift+Alt+G)

然后,这个.sql脚本作为
SqlScript
元素包含在WiX升级包中

这不是我想要的——因为你必须有一个旧数据库的副本来比较——但至少它不需要任何昂贵的工具