【发布时间】:2012-06-19 14:45:11
【问题描述】:
我正在从现有的 pgsql 数据库生成 POCO。
我想将生成的 POCO 放入自己的 C# 类库和 DbContext 并映射到 不同的项目,这样我的 POCO 就没有任何与 EF 相关的参考。
我正在尝试修改 Context.tt 模板以在 OnModelCreating() 期间在运行时指定表架构,因为在生成的实体上使用 [Table] 属性会引入到 EF 库的硬链接。
我的问题是我目前无法从当前的 EnitySet 中检索架构名称。 这是我迄今为止所做的摘录:
var efHost = (EfTextTemplateHost)Host;
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
<#
foreach (var set in efHost.EntityContainer.BaseEntitySets.OfType<EntitySet>())
{
#>
modelBuilder.Configurations.Add(new <#= set.ElementType.Name #>Map());
modelBuilder.Entity<<#= set.ElementType.Name #>>().ToTable("<#= set.Name #>", "<#=????#>");
<#
}
#>
}
此时唯一可用的对象是 EfTextTemplateHost 的一个实例。
感谢任何帮助。
TIA。
编辑:我找到了检索架构的方法(set.MetadataProperties["Schema"].Value ?? ""),但值始终为 null ! 这可能意味着逆向工程代码优先工具不会将值提供给模板主机。我可能会结束解析 edmx 文件。待续。
【问题讨论】:
标签: entity-framework-4 ef-code-first t4