Заставить EF6-скаффолдер включать директивы using в пространство имен - PullRequest
1 голос
/ 17 апреля 2019

При создании класса контекста базы данных и классов сущностей POCO с помощью команды Scaffold-DbContext (первый подход к БД) классы генерируются следующим образом:

    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 Ответ

0 голосов
/ 09 мая 2019

Вы можете написать метод, который читает строки файлов 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
#>
...