好的,考虑到@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 命名空间中。好消息是……它有效!