向数据库添加列 - 如何更新 dbml 文件?

问题描述 投票:0回答:7

有没有办法刷新 dbml 文件,还是必须删除它并生成一个全新的文件?

linq-to-sql
7个回答
23
投票

据我所知,设计器中没有内置功能可以使用数据库中的更改来更新表。

有第三方工具 (http://www.huagati.com/dbmltools/) 提供此类功能。

每当我遇到这个问题时,它都是按照已经设置了多个手动关系的表上的一两列的顺序进行的,因此我只需编辑 XML(右键单击 DBML 并选择打开方式 -> XML)并添加表定义的列。

保存 DBML 文件时,关联的

.designer.cs
文件会自动更新为新添加列的代码。因此,无需在设计器模式下删除并重新创建表。


17
投票

我听说过一个奇怪的技巧,您可以为修改后的表创建一个新实体,然后将新属性从新实体拖/剪切到旧实体。不过从来没有尝试过。


2
投票

没有自动刷新 DBML 或告诉 DBML 重新读取数据库的机制。

我相信最简单的方法是在设计器中打开dbml文件,删除表,然后将其重新添加到设计图面。尽管这可能取决于数据库的复杂性,即您可能会丢失某些信息。

在尝试之前我会先备份 dbml 文件:)


1
投票

这通常是相当痛苦的。重新编译,关闭 VS,重新打开它等等。它应该可以工作,但对我来说总是有延迟。使用 LINQ 手动创建模型可能会更容易,但这正是我所做的。这样我就可以完全控制它了。


1
投票

我无法删除我的表并重新添加(这是最快的方法),因为它在某处用作返回类型。如果您的数据库真的很复杂,这也可能是一个坏主意

对我来说最好的方法是:

将相同的表添加到 dbml 使用 xml 编辑打开 dbml(右键单击 -> 打开方式) 从刚刚添加的表中复制 XML 列部分,并将其粘贴到有问题的表的列部分中。 节省 常规方式打开Dbml 删除已添加的表


0
投票

如果您对模型进行了修改,删除表并重新添加它可能会导致更多问题。在这些情况下,我建议手动修改设计器(或 dbml 文件)。不要触摸 .Designer 文件,因为这些更改将被覆盖。

另一个值得考虑的替代方案是使用 SqlMetal 作为构建过程的一部分,从数据库重新生成模型。


0
投票

注意:如果无法在图形界面中打开DBML文件,请添加这里提到的“LINQ to SQL Tools” https://superuser.com/questions/1193196/how-to-open-dbml-in-designer-mode-with-vs

为了扩展现代 Visual Studio 2022 环境的答案,我必须...

  1. 关闭解决方案
  2. 以文本文件形式打开 DBML 并添加新字段。保存并关闭文件
  3. 打开解决方案
  4. 双击 DBML,在可视化 GUI 编辑器中将其打开。您需要上面提到的 LINQ to SQL 工具
  5. 单击相关表并添加一个新属性,名称并不重要,“Property1”就足够了
  6. 保存并重建。
  7. 从 #5 中删除新的临时字段
  8. 保存并重建,一切正常。
© www.soinside.com 2019 - 2024. All rights reserved.