C# EF代码首先重命名生成的POCO类中的属性

C# EF代码首先重命名生成的POCO类中的属性,c#,entity-framework,code-generation,t4,C#,Entity Framework,Code Generation,T4,我首先使用数据库中的实体数据模型向导代码来生成dbcontext和POCO类。不幸的是,我在一个非常旧的数据库上运行,所有的数据库列都有小写名称,通常带有下划线,在C中看起来像垃圾。如果代码生成器将属性[Columncolumn_name]放入我们的~100个表中,那就太好了最重要的是数据库中没有大写的内容,或者如果有一种简单的方法可以告诉VisualStudio查看一个文件并为所有小写属性添加该属性,而这些小写属性甚至不包含itor 我看了一些T4的东西,反向poco生成器,等等,但它看起来几

我首先使用数据库中的实体数据模型向导代码来生成dbcontext和POCO类。不幸的是,我在一个非常旧的数据库上运行,所有的数据库列都有小写名称,通常带有下划线,在C中看起来像垃圾。如果代码生成器将属性[Columncolumn_name]放入我们的~100个表中,那就太好了最重要的是数据库中没有大写的内容,或者如果有一种简单的方法可以告诉VisualStudio查看一个文件并为所有小写属性添加该属性,而这些小写属性甚至不包含itor

我看了一些T4的东西,反向poco生成器,等等,但它看起来几乎和手动重命名属性一样耗时。当您在VS Add New Item窗口中选择ADO.NET Entity Data Model时运行的实体数据模型向导代码的源是否在任何地方都可用,以便我可以从已经工作的内容开始

或者有人知道一个史诗般的发现/替换需要多少时间

public string n_addr1 { get; set; }
并给予

[Column("n_addr1")]
public string N_addr1 { get; set; }

在不知道n_addr1是什么的情况下,这意味着它必须匹配公共字符串和/或{get;set;}

我做了类似的事情,我将发布用于查找类名称的代码。我进行了编辑,以便它与您传递的文件名一起工作。在我的一门课上进行了测试,效果良好

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);
    }
}

这是哪个版本的Visual Studio?查找/替换正则表达式语法因版本而异。此外,可能无法更改案例。实际上,编写一个快速控制台应用程序来运行源文件并进行更改可能会更容易。VS 2015 Pro 14.0.24720.00 Update 1-我想你是对的,控制台应用程序可能是一个不错的选择。使用“查找和替换”功能,这是我所能做到的最接近的。查找:公共字符串{[A-Za-z\d]+}替换:[Column$1]公共字符串$1。它没有修好箱子,也没有给你回车。祝控制台应用程序好运。