#c# #.net #entity-framework #entity-framework-6
#c# #.net #entity-framework #entity-framework-6
Вопрос:
При создании класса контекста базы данных и классов сущностей POCO с использованием команды Scaffold-DbContext (первый подход DB) классы генерируются следующим образом:
using System;
using System.Collections.Generic;
namespace Database
{
public partial class User
{
public User()
{ ... }
}
}
Чего я хочу добиться, так это чтобы классы POCO создавались с директивами «using» внутри пространства имен, например:
namespace Database
{
using System;
using System.Collections.Generic;
public partial class User
{
public User()
{ ... }
}
}
Возможно ли это достичь без изменения шаблонов EF T4?
Ответ №1:
Вы могли бы написать метод, который считывает строки файлов 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
#>