我使用实体数据模型向导(Code First From Database)生成dbcontext和POCO类。不幸的是,我在一个非常旧的数据库上运行,并且所有数据库列都有小写名称,通常带有下划线,看起来像C#中的垃圾。如果代码生成器将属性[Column(" column_name")]放在数据库中没有大写的所有内容上,或者如果我们拥有大约100个表,它会非常好用。有一种简单的方法可以告诉visual studio查看文件并为所有尚未拥有它的小写属性添加该属性(甚至只是所有属性期间)。
我已经看过一些T4的东西,反向poco发电机等等。但是,手动重命名属性似乎很费劲。是您选择" ADO.NET实体数据模型"时运行的(实体数据模型向导)代码的源代码。在VS添加新项目窗口可用的任何地方,所以我可以从已经工作的东西开始?
或者有人知道将要采取的史诗般的发现/替换
public string n_addr1 { get; set; }
并给予
[Column("n_addr1")]
public string N_addr1 { get; set; }
不知道调用了什么n_addr1,这意味着它必须匹配公共字符串和/或{get;设置;}
答案 0 :(得分:1)
我做了类似的事情,我将发布我用来找到"名称"的代码。班上的。我编辑,以便它与您传递的fileName一起使用。测试我的一个类,这是有效的。
var fileName = @"YOUR FILE NAME";
StringBuilder builder = new StringBuilder();
using (StreamReader sr = new StreamReader(fileName))
{
while (!sr.EndOfStream)
{
var line = sr.ReadLine();
var match = Regex.Match(line, @"{\s?get;\s?set;\s?}");
if (match.Success)
{
var split = Regex.Split(line, @"{\s?get;\s?set;\s?}");
var declaration = split[0].Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
var last = declaration.Count();
var name = declaration[last - 1];
builder.AppendLine(string.Format("[Column(\"{0}\")]", name));
}
builder.AppendLine(line);
}
}