数据库模式更改后更新LINQ to SQL类的最佳方法
我在一个项目中使用LINQ to SQL类,在这个项目中数据库devise仍然有点不稳定。
有一种简单的方法来同步类与模式,或者我需要手动更新类,如果表devise更改?
您可以使用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 Tools 。
Huagati DBML / EDMX Tools是Visual Studio的一个插件,它为Visual Studio 2008中的Linq2SQL / DBML关系图devise器和Visual Studio 2008 SP1中的ADO.NETentity frameworkdevise器添加了function。 该外接程序添加了新的菜单选项,用于更新Linq2SQLdevise器图表和数据库更改,重命名Linq-to-SQL(DBML)和EF(EDMX)类和属性以使用.net命名约定,以及向Linq添加文档/从数据库属性到SQL生成的类。
这是一个简单的修复,没有任何额外的软件,只是简单的变化(如增加字段,less数表等)的作品。
说明:
- 您将更改的表的副本拖入devise器(稍后将被移除)
- 现在select所有新(或更改)的字段和(
right-click ->
)copy
- 在您的原始表格中,右键单击并
insert
它们(首先删除更改的字段) - 现在删除您从中复制的表格
我知道这有点不明显,但是不直观,对我很有帮助,因为所有正确的属性和types都将被复制,并且所有链接都保持不变。 希望能帮助到你。
何时使用:
当然,如上所述,对于小的修改,当然要比手工用多个链接replace表,或者当你不希望整个数据库结构由SQLMetal生成。 例如,当您拥有大量表(例如SAP)时,或使用来自不同数据库的交叉链接表时。
DamienG已经写了一些t4模板 ,可以替代VS为你生成的一些东西。 这些可以通过命令行工具随时重新运行。
T4模板有可编辑的附加好处。 这可以让你调整生成的内容给你的心。
杰夫最近抱怨这件事。 一个常用的技巧是将所有对象再次拖入devise器中。
我希望别人能用更好的方法编出来!
我写了一个工具来对Dbml脚本进行脚本更改,请参阅http://code.google.com/p/linqtodbmlrunner/和我的博客http://www.adverseconditionals.com
如何修改在Visual Studio中的DataContextdevise表面内的实体/表的属性?
例如,如果我添加一列到SQL Server表:
- 打开* .dbml文件。
- 右键单击该实体并select添加>属性。
- 填写新列的属性窗口中的值。
- build立你的解决scheme
自动生成的模型类应反映已添加的新列。