我正在一个项目中使用LINQ to SQL类,数据库设计仍处于不断变化之中。
是否有一种简单的方法可以将类与模式同步,或者如果表设计发生更改,是否需要手动更新类?
答案 0 :(得分:64)
您可以使用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>
答案 1 :(得分:17)
我自己没有尝试过,但其他人推荐Huagati DBML/EDMX Tools。
Huagati DBML / EDMX Tools是一个插件 对于添加的Visual Studio Linq2SQL / DBML的功能 Visual Studio中的图设计器 2008,以及ADO.NET实体 Visual Studio中的框架设计器 2008 SP1。该加载项添加了新菜单 更新Linq2SQL设计器的选项 数据库更改的图表 重命名Linq-to-SQL(DBML)和EF (EDMX)要使用的类和属性 .net命名约定,以及 添加文档/描述 Linq-to-SQL生成的类来自 数据库属性。
答案 2 :(得分:8)
这是一个简单的修复,没有任何其他软件,只适用于简单的更改(如添加的字段,几个表等)。
right-click ->
)copy
insert
他们(先删除已更改的字段)我知道这有点显而易见,但有点不直观,而且对我有很大帮助,因为所有正确的属性和类型都会被复制,所有链接都保持不变。希望它有所帮助。
当然,如上所述 - 对于小的更改,但肯定比手动替换具有许多链接的表更好,或者当您不希望由SQLMetal生成整个数据库结构时。例如,当您有大量表(例如SAP)或使用来自不同数据库的交叉链表时。
答案 3 :(得分:5)
T4模板具有可编辑的额外好处。这允许您调整生成的内容。
答案 4 :(得分:4)
我认为杰夫最近抱怨这件事。一种常见的技术是将所有对象再次拖动到设计器中......
我希望其他人能够采用更好的方法!
答案 5 :(得分:1)
我写了一个工具来对Dbml脚本进行脚本更改,请参阅http://code.google.com/p/linqtodbmlrunner/和我的博客http://www.adverseconditionals.com
答案 6 :(得分:0)