强制EF6脚手架在名称空间内包含“ using”指令

时间:2019-04-17 13:19:15

标签: c# .net entity-framework entity-framework-6

在生成数据库上下文类和POCO实体类时,使用Scaffold-DbContext命令(数据库优先方法),通过以下方式生成类:

    using System;
    using System.Collections.Generic;

    namespace Database
    {
        public partial class User
        {
            public User()
            { ... }
        }
    }

我想要实现的是在名称空间中使用'using'指令生成POCO类,如下所示:

    namespace Database
    {
        using System;
        using System.Collections.Generic;

        public partial class User
        {
            public User()
            { ... }
        }
    }

是否可以在不修改EF T4模板的情况下实现?

1 个答案:

答案 0 :(得分:0)

您可以编写一种方法来读取POCO文件的行,检测using行,将其删除并在namespace行下重新编写。

这可以通过使用T4模板来实现。每次在构建时运行此模板,以确保所有POCO均已修改。

单个模型的示例:

<#@ import namespace="System.IO" #>
<#@ template debug="false" hostspecific="true" language="C#" #>
<# 
string path = this.Host.ResolvePath(@"PocoClass.cs");
var PocoLines= File.ReadLines(path).ToArray();

List<string> usingStatements = new List<string>();

foreach (var line in pocoLines)
{
    if(Regex.Match(line, "RegexForUsings") //or use String.Contains("using");
        usingStatements.Add(line);
}
//insert lines again in PocoLines
#>