有没有办法刷新 dbml 文件,还是必须删除它并生成一个全新的文件?
据我所知,设计器中没有内置功能可以使用数据库中的更改来更新表。
有第三方工具 (http://www.huagati.com/dbmltools/) 提供此类功能。
每当我遇到这个问题时,它都是按照已经设置了多个手动关系的表上的一两列的顺序进行的,因此我只需编辑 XML(右键单击 DBML 并选择打开方式 -> XML)并添加表定义的列。
保存 DBML 文件时,关联的
.designer.cs
文件会自动更新为新添加列的代码。因此,无需在设计器模式下删除并重新创建表。
我听说过一个奇怪的技巧,您可以为修改后的表创建一个新实体,然后将新属性从新实体拖/剪切到旧实体。不过从来没有尝试过。
没有自动刷新 DBML 或告诉 DBML 重新读取数据库的机制。
我相信最简单的方法是在设计器中打开dbml文件,删除表,然后将其重新添加到设计图面。尽管这可能取决于数据库的复杂性,即您可能会丢失某些信息。
在尝试之前我会先备份 dbml 文件:)
这通常是相当痛苦的。重新编译,关闭 VS,重新打开它等等。它应该可以工作,但对我来说总是有延迟。使用 LINQ 手动创建模型可能会更容易,但这正是我所做的。这样我就可以完全控制它了。
我无法删除我的表并重新添加(这是最快的方法),因为它在某处用作返回类型。如果您的数据库真的很复杂,这也可能是一个坏主意
对我来说最好的方法是:
将相同的表添加到 dbml 使用 xml 编辑打开 dbml(右键单击 -> 打开方式) 从刚刚添加的表中复制 XML 列部分,并将其粘贴到有问题的表的列部分中。 节省 常规方式打开Dbml 删除已添加的表
如果您对模型进行了修改,删除表并重新添加它可能会导致更多问题。在这些情况下,我建议手动修改设计器(或 dbml 文件)。不要触摸 .Designer 文件,因为这些更改将被覆盖。
另一个值得考虑的替代方案是使用 SqlMetal 作为构建过程的一部分,从数据库重新生成模型。
注意:如果无法在图形界面中打开DBML文件,请添加这里提到的“LINQ to SQL Tools” https://superuser.com/questions/1193196/how-to-open-dbml-in-designer-mode-with-vs
为了扩展现代 Visual Studio 2022 环境的答案,我必须...