Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取T4模板中edmx的命名空间_C#_Visual Studio_Code Generation_T4 - Fatal编程技术网

C# 获取T4模板中edmx的命名空间

C# 获取T4模板中edmx的命名空间,c#,visual-studio,code-generation,t4,C#,Visual Studio,Code Generation,T4,当我将模板安装到与edmx命名空间不同的命名空间中时,由于缺少命名空间,生成的代码会出错 所以我试图添加一个“using”语句来解决这个问题,但我不知道如何获取edmx所在的名称空间 到目前为止,我有以下内容(为简洁起见进行了编辑): 常量字符串edmxFile=@“./Entities/northwindenties.edmx”; CodeGenerationTools代码=新的CodeGenerationTools(此代码); 字符串namespaceName=code.VsNamespa

当我将模板安装到与edmx命名空间不同的命名空间中时,由于缺少命名空间,生成的代码会出错

所以我试图添加一个“using”语句来解决这个问题,但我不知道如何获取edmx所在的名称空间

到目前为止,我有以下内容(为简洁起见进行了编辑):


常量字符串edmxFile=@“./Entities/northwindenties.edmx”;
CodeGenerationTools代码=新的CodeGenerationTools(此代码);
字符串namespaceName=code.VsNamespaceSuggestion();
字符串edmxNamespaceName=“?”;
使用制度;
使用System.Data.Object;
使用System.Data.Objects.DataClass;
使用;
名称空间
{
// ...
}
请帮我解“edmxNamespaceName”


谢谢

您可以使用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)#>;

使用制度;
使用System.Data.Object;
使用System.Data.Objects.DataClass;
使用;

这是一个古老的问题,但由于我无意中发现了它,正在寻找答案,我将提供我发现的。。。*.tt的属性包括一个名为“自定义工具名称空间”的选项。这将覆盖MetadataLoader的使用,MetadataLoader查看物理结构以确定名称空间。我必须为我的旧数据库第一个项目的.Context.tt和.tt文件设置这个

这要归功于这些让我走上正确道路的响应。

Ok,这会导致“NorthwindModel”,它在属性对话框中作为名称空间列出,但我需要数据上下文和模型所在的实际名称空间。在我的示例中,它应该是“MyProject.Entities”。
<#
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)#>;