我在一个项目中使用LINQ to SQL类,而该项目的数据库设计仍然有些变化。
是否有一种简单的方法可以将类与模式同步,或者如果表设计发生更改,是否需要手动更新类?
Answers:
您可以使用SQLMetal.exe生成dbml和/或cs / vb文件。使用预构建脚本启动它,并定位您的datacontext项目所属的目录。
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\sqlmetal.exe
/server:<SERVER>
/database:<database>
/code:"path\Solution\DataContextProject\dbContext.cs"
/language:csharp
/namespace:<your namespace>
我自己还没有尝试过,但是其他人推荐使用Huagati DBML / EDMX工具。
Huagati DBML / EDMX工具是Visual Studio的外接程序,可为Visual Studio 2008中的Linq2SQL / DBML图表设计器以及Visual Studio 2008 SP1中的ADO.NET实体框架设计器添加功能。外接程序添加了新的菜单选项,用于通过数据库更改来更新Linq2SQL设计器图,重命名Linq-to-SQL(DBML)和EF(EDMX)类和属性以使用.net命名约定,以及向Linq添加文档/描述-to-SQL从数据库属性生成的类。
这是一个简单的修复程序,无需任何其他软件,仅适用于简单的更改(例如添加的字段,少量的表格等)。
right-click ->
)copy
insert
它们,然后将它们删除(首先删除更改的字段)我知道它是显而易见的,但是以某种方式是非直觉的,它对我有很大帮助,因为将复制所有正确的属性和类型,并且所有链接保持不变。希望能帮助到你。
如前所述,它当然是很小的更改,但是肯定比手动替换具有许多链接的表更好,或者比您不希望整个数据库结构由SQLMetal生成更好。例如,当您有大量的表(例如SAP)或使用来自不同数据库的交叉链接表时。
我写了一个工具来对Dbml脚本进行脚本更改,请参见http://code.google.com/p/linqtodbmlrunner/和我的博客http://www.adverseconditionals.com