首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强制sqlmetal保持域名大小写?

如何强制sqlmetal保持域名大小写?
EN

Stack Overflow用户
提问于 2010-01-04 20:07:56
回答 1查看 494关注 0票数 6

当Visual Studio自动生成dbml文件时,我将获得与表中显示的字段名称完全相同的字段名称。

但是,由于VS没有为dbml提供刷新功能,所以我手动运行sqlmetal来重新创建dbml文件。它工作得很好,但有一个例外-- sqlmetal“更正”名称

代码语言:javascript
复制
ses_Id -> Ses_Id
aga_Id -> Aga_Id

以此类推--它可能会将CamelCase更改为camelCase。

Sqlmetal帮助没有列出任何开关来保持字段名称不变(只有复数开关)。那么,有没有人知道保持字段名大小写的隐藏开关?

提前谢谢你。

已解决

没有这样的开关,MS收到了这个问题的通知--添加这样的功能的wish报告(因为它导致了更新项目的问题)被关闭了:-(

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-19 15:41:54

我怀疑有没有隐藏的开关。我也遇到了同样的问题,所以我编写了一个简单的Perl脚本来解决这个问题:

代码语言:javascript
复制
# Usage: fdbml.pl in.dbml out.dbml
my $in_file = $ARGV[0];
my $out_file = $ARGV[1];

# Scrape in file for identifiers
my @identifiers;
open IN, "<$in_file";
while (<IN>) {
    if ($_ =~ /<Table Name="(?:\w+\.)?(\w+)" Member="(\w+)"/) { push @identifiers, "$1 $2"; }
    if ($_ =~ /<Function Name="(?:\w+\.)?(\w+)" Method="(\w+)"/) { push @identifiers, "$1 $2"; }
}
close IN;

# Translate in file to out file
open IN, "<$in_file";
open OUT, ">$out_file";
while (<IN>) {
    my $line = $_;

    # Replace identifiers
    foreach my $identifier (@identifiers) { 
        my ($new, $old) = split(' ', $identifier);
        $line =~ s/"$old((?:Result)?)"/"$new$1"/g;
    }   
    $line =~ s/<Parameter Name="(\w+)" Parameter="\w+"/<Parameter Name="$1" Parameter="$1"/;

    print OUT $line;
}
close OUT;
close IN;

只需将所有这些保存到fdbml.pl,确保已安装DBML,然后在您的ActiveState文件上运行以下命令:

代码语言:javascript
复制
fdbml.pl old.dbml new.dbml

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1999151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档