Получение пространства имен для edmx в шаблоне T4 - PullRequest
0 голосов
/ 25 января 2012

Когда я устанавливаю свой шаблон в пространство имен, отличное от пространства имен edmx, генерируемый код содержит ошибки из-за отсутствующего пространства имен.

Итак, я пытаюсь добавить выражение "using" для решения этой проблемы, но я не знаю, как получить пространство имен, в котором находится edmx.

У меня есть это (отредактировано для краткости):

<#@ template debug="true" hostspecific="true" language="C#" #>
<#@ include file="EF.Utility.CS.ttinclude"#>
<#@ output extension=".cs"#>

const string edmxFile = @"../Entities/NorthwindEntities.edmx";

CodeGenerationTools code = new CodeGenerationTools(this);

string namespaceName = code.VsNamespaceSuggestion();
string edmxNamespaceName = "???";

using System;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
using <#= edmxNamespaceName #>;

namespace <#= namespaceName #>
{
    // ...
}

, пожалуйста, помогите мне решить для "edmxNamespaceName".

Спасибо!

1 Ответ

0 голосов
/ 27 апреля 2012

Вы можете использовать класс MetadataLoader

<#
string edmxFile = @"../Entities/NorthwindEntities.edmx";
CodeGenerationTools code = new CodeGenerationTools(this);

MetadataLoader loader = new MetadataLoader(this);
string modelNamespace = loader.GetModelNamespace(edmxFile);
#>

using System;
using System.Data.Objects;
using System.Data.Objects.DataClasses;
using <#=code.Escape(modelNamespace)#>;
...