好的,考虑到@jlew 的建议,我找到了一种解决方法,是的,它点击了:
这里是:
首先,我使用从以下链接下载的自定义模板覆盖了“CodeTemplates/ReverseEngineerCodeFirst”文件夹下生成的默认模板:
http://romiller.com/2012/05/09/customizing-reverse-engineer-code-first-in-the-ef-power-tools/
(注意:这样做是为了使用 Data Annotations 进行配置,而不是 Fluent API,因此使用 Data Annotations 完成列和表映射。有关详细信息,请参阅上面的链接。
然后我做了以下操作:
-
在 Context.tt 文件中替换
using <#= code.EscapeNamespace(efHost.MappingNamespace) #>;
namespace <#= code.EscapeNamespace(efHost.Namespace) #>
与
<#
var hostMapNamespace = code.EscapeNamespace(efHost.MappingNamespace);
hostMapNamespace = hostMapNamespace.Replace(".Models", ".ModelsEF");
var hostNamespace = code.EscapeNamespace(efHost.Namespace);
hostNamespace = hostNamespace.Replace(".Models", ".ModelsEF");
#>
using <#= hostMapNamespace #>;
namespace <#= hostNamespace #>
2- 在 Entity.tt 文件中替换
namespace <#= code.EscapeNamespace(efHost.Namespace) #>
与
<#
var hostNamespace = code.EscapeNamespace(efHost.Namespace);
hostNamespace = hostNamespace.Replace(".Models", ".ModelsEF");
#>
namespace <#= hostNamespace #>
3- 在 Mapping.tt 文件中替换
namespace <#= code.EscapeNamespace(efHost.Namespace) #>
与
<#
var hostMapNamespace = code.EscapeNamespace(efHost.Namespace);
hostMapNamespace = hostMapNamespace.Replace(".Models", ".ModelsEF");
#>
namespace <#= hostMapNamespace #>
简而言之,我对自定义模板中的命名空间生成进行了一些更改,以避免与任何现有的项目类发生冲突,尤其是在 Models 命名空间中。好消息是……它有效!