【发布时间】:2009-12-20 20:51:44
【问题描述】:
当我在 Sql Server 中修改表的结构时,它不会自动反映在“Dbml”布局设计器中吗?每次我都必须删除“dbml”布局设计器中的表并拖动表来自 sql server。
【问题讨论】:
标签: linq-to-sql mapping
当我在 Sql Server 中修改表的结构时,它不会自动反映在“Dbml”布局设计器中吗?每次我都必须删除“dbml”布局设计器中的表并拖动表来自 sql server。
【问题讨论】:
标签: linq-to-sql mapping
如果您可以选择“刷新”以保留您所做的任何本地自定义设置,那就太好了,但设计器似乎不是这样工作的。但是,您可以通过在设计器中添加/删除生成的类中的列来简单地(手动)在设计器中对表进行相同的更新。
【讨论】:
如果我是你,我会开始使用SqlMetal。 SqlMetal 是用于生成 LINQ DataContexts 的命令行应用程序。它可以生成 dbml 或只是一组类供您在项目中使用(它非常可定制)。因此,创建一个调用 SqlMetal 的批处理文件并在每次更改数据库时运行它,这样您的项目将始终与数据库保持同步。
如果您不想在每次更新数据库时都运行批处理文件,您可以在每次使用 pre-build step 构建应用程序时运行它。
【讨论】:
有多种方法可以使 L2S 模型与底层数据库保持同步:
1) 从设计器界面中删除涉及的表/类,然后将它们从“服务器资源管理器”中拖回来。
...或...
2) 手动更新 L2S 设计器中涉及的类。
...或...
3) 使用具有更新功能的第三方工具(我的插件就是一个这样的工具:http://www.huagati.com/dbmltools/,在 2009 年 12 月号的 MSDN 杂志http://msdn.microsoft.com/en-us/magazine/ee819138.aspx 中也提到过)
...或...
4) 使用设计器或 sqlmetal.exe 重新生成整个 DBML 文件。
【讨论】: