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


Answers:


65

您可以使用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>

这很棒!我认为我只需要将所有内容重新拖动到dbml中即可。
naspinski

14
不幸的是,没有选项只能过滤所需的表/过程/方案...
Seiti

我创建了一个实用程序来帮助进行过滤。它使您可以选择要排除的表,还可以为非pk列选择要进行updatecheck.never的表。让我知道是否有人想要源代码。
vzczc

17

我自己还没有尝试过,但是其他人推荐使用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从数据库属性生成的类。

DBML工具的屏幕截图


仅供参考-该站点有30个免费试用版,单用户许可费刚刚超过100美元。
丹·埃斯帕萨

更正,199美元,功能有限的试用版。不确定是否值得。
Levitikon 2012年

8

这是一个简单的修复程序,无需任何其他软件,仅适用于简单的更改(例如添加的字段,少量的表格等)。

说明:

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

我知道它是显而易见的,但是以某种方式是非直觉的,它对我有很大帮助,因为将复制所有正确的属性和类型,并且所有链接保持不变。希望能帮助到你。

何时使用:

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


5

DamienG已经编写了一些t4模板,可以代替VS为您生成的一些模板。您可以随时通过命令行工具重新运行这些文件。

T4模板具有可编辑的附加好处。这使您可以调整心中所产生的内容。


4

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

我希望其他人能以更好的方式参与进来!


这就是我们正在做的...并且开始变得非常烦人!:-)
理查德·埃夫


0

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

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

  1. 打开* .dbml文件。
  2. 右键单击实体,然后选择添加>属性。
  3. 在“属性”窗口中为新列填写值。
  4. 建立您的解决方案。

自动生成的模型类应反映已添加的新列。

在此处输入图片说明

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.