数据库架构更改后更新LINQ to SQL类的最佳方法

时间:2008-09-02 16:54:56

标签: c# .net linq-to-sql

我正在一个项目中使用LINQ to SQL类,数据库设计仍处于不断变化之中。

是否有一种简单的方法可以将类与模式同步,或者如果表设计发生更改,是否需要手动更新类?

7 个答案:

答案 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生成的类来自   数据库属性。

Screenshot of DBML Tools

答案 2 :(得分:8)

这是一个简单的修复,没有任何其他软件,只适用于简单的更改(如添加的字段,几个表等)。

说明:

  • 您将已更改的表格的副本提取到设计器中(稍后将删除)
  • 现在选择所有新(或更改)字段和(right-click ->copy
  • 在原始表格中右键单击并insert他们(先删除已更改的字段)
  • 现在删除您从
  • 复制的表格

我知道这有点显而易见,但有点不直观,而且对我有很大帮助,因为所有正确的属性和类型都会被复制,所有链接都保持不变。希望它有所帮助。

何时使用:

当然,如上所述 - 对于小的更改,但肯定比手动替换具有许多链接的表更好,或者当您不希望由SQLMetal生成整个数据库结构时。例如,当您有大量表(例如SAP)或使用来自不同数据库的交叉链表时。

答案 3 :(得分:5)

DamienG写了一些t4 templates,它可以代替VS为你生成的一些内容。只要您愿意,可以通过命令行工具重新运行这些。

T4模板具有可编辑的额外好处。这允许您调整生成的内容。

答案 4 :(得分:4)

我认为杰夫最近抱怨这件事。一种常见的技术是将所有对象再次拖动到设计器中......

我希望其他人能够采用更好的方法!

答案 5 :(得分:1)

我写了一个工具来对Dbml脚本进行脚本更改,请参阅http://code.google.com/p/linqtodbmlrunner/和我的博客http://www.adverseconditionals.com

答案 6 :(得分:0)

如何在Visual Studio中修改DataContext设计图面中的实体/表的属性?

例如,如果我向SQL Server表中添加了一列:

  1. 打开* .dbml文件。
  2. 右键单击该实体,然后选择添加&gt;属性。
  3. 在“属性”窗口中填写新列的值。
  4. 构建解决方案。
  5. 自动生成的模型类应该反映添加的新列。

    enter image description here

    enter image description here