用于特定表的 SQL Metal 或刷新/将表添加到 .dbml 文件的其他方式

2024-02-04

任何人都可以在 Visual Studio 中轻松执行此操作,而无需使用服务器资源管理器?

我也尝试查看宏,但录制仅产生

  Sub TemporaryMacro()
  End Sub

所以没有运气。

有什么办法编写这个脚本吗?


我正在使用与此类似的批处理脚本来在基础表/视图更改时管理模型的更新。使用方法:

  1. 有 SQLMetal 和SQL金属包含 http://sqlmetalinclude.codeplex.com/(您可能必须从源代码下载并构建)可从当前目录(或路径中)访问
  2. 创建一个文件“chosenEntities.txt”,每行包含一个表/视图名称。这些表将是唯一为其生成代码的表。
  3. 修改、保存并执行Generate.bat批处理代码
  4. (可选)将 .bat 文件作为外部运行工具添加到 Visual Studio,如下所述here https://stackoverflow.com/questions/6414788/how-can-i-add-a-custom-command-to-visual-studio

生成.bat:

sqlmetal /conn:"Data Source={Hostname};Initial Catalog={DBName};User ID={Username};Password={Password}" /dbml:temp.dbml /views

setlocal EnableDelayedExpansion
set file=chosenEntities.txt
set include=
FOR /F %%i IN (%file%) DO (
set include=!include!%%i,
)
set include=%include:~0,-1%

sqlmetalinclude -dbml:temp.dbml -output:ChosenEntities.dbml -include:%include%

sqlmetal /context:CustomDataContext /pluralize /namespace:MyNamespace.DB /language:csharp /code:DBEntities.cs /entitybase:DBEntityBase ChosenEntities.dbml

selectedEntities.txt 示例:

Accounts
Customers
PRODUCTS_VIEW
AnotherTable

解释:

  1. 中间 .dbml 文件像往常一样由 sqlmetal 生成。创建的 dbml 文件包含数据库中每个表的定义(以及视图,如果选择)
  2. 下一个代码块循环遍历 selectedEntities.txt,并为每一行附加行内容(表名称)和逗号“,”
  3. 最后一个尾随逗号被删除
  4. 运行 sqlmetalinclude,这基本上会生成原始 temp.dbml 文件的副本,但仅包含您指定的表。还有其他可用选项,例如转换单个表名称
  5. sqlmetal 第二次运行,这次根据缩减的 .dbml 文件生成实际的 .cs 代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于特定表的 SQL Metal 或刷新/将表添加到 .dbml 文件的其他方式 的相关文章

随机推荐