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

时间:2009-07-31 11:48:35

标签: linq-to-sql

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

6 个答案:

答案 0 :(得分:21)

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

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

每当我遇到这个问题时,它已经在一个表上已经设置了多个手动关系的一列或两列,所以我只是编辑了XML(右键单击DBML并选择open with - > XML )并将列添加到表定义中。

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

答案 1 :(得分:13)

我听说过 一个奇怪的技巧 ,您可以在其中为修改后的表创建一个新实体,然后将新属性从新实体拖动/剪切到旧实体一。但是从未尝试过。

答案 2 :(得分:1)

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

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

我先尝试备份dbml文件,然后再尝试:)

答案 3 :(得分:1)

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

最好的方法是:

将同一表添加到dbml 使用xml编辑打开dbml(右键单击 - >打开) 从刚添加的表中复制XML列部分并粘贴到违规表的列部分。 保存 以常规方式打开Dbml 删除已添加的表格

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

另一个需要考虑的方法是使用SqlMetal作为构建过程的一部分,从数据库中重新生成模型。