在生成数据库上下文类和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模板的情况下实现?
答案 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
#>