在T4模板中获取edmx的名称空间

问题描述 投票:0回答:2

当我将模板安装到与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”。

谢谢!

当我将模板安装到与edmx命名空间不同的命名空间中时,由于缺少命名空间,因此生成的代码有错误。因此,我正在尝试向...

c# visual-studio code-generation t4
2个回答
0
投票

您可以使用MetadataLoader类


0
投票

这很旧,但是由于我偶然发现它以寻找答案,因此我将提供所发现的... * .tt的属性包括一个名为“自定义工具命名空间”的选项。这将覆盖MetadataLoader的使用,后者会查看物理结构来确定名称空间。我必须为旧数据库第一个项目的.Context.tt和.tt文件都设置此选项。

© www.soinside.com 2019 - 2024. All rights reserved.