gre*_*man 6 linq sqlmetal linq-to-sql visual-studio
当Visual Studio自动生成dbml文件时,我会得到表中出现的确切字段名称.
但是,由于VS不为dbml提供刷新功能,因此我手动运行sqlmetal以重新创建dbml文件.它有一个例外 - sqlmetal"纠正"名称
ses_Id -> Ses_Id
aga_Id -> Aga_Id
Run Code Online (Sandbox Code Playgroud)
等等 - 它可能会将camelCase更改为CamelCase.
Sqlmetal帮助没有列出任何开关来保持字段名称按原样(只有复数开关).那么,有没有人知道隐藏的开关保持字段名称的情况?
先感谢您.
没有这样的开关,并且MS被通知了这个问题 - 添加这样的功能的愿望报告(因为它有更新项目的问题)被关闭为wontfix :-(
我怀疑是不是有隐藏开关。我也遇到了同样的问题,所以我写了一个简单的 Perl 脚本来解决它:
# 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;
Run Code Online (Sandbox Code Playgroud)
只需将所有内容保存到 fdbml.pl,确保安装了 ActiveState Perl,然后在 DBML 文件上运行:
fdbml.pl old.dbml new.dbml
Run Code Online (Sandbox Code Playgroud)
本
| 归档时间: |
|
| 查看次数: |
466 次 |
| 最近记录: |