实体框架6.1代码首先来自现有数据库 - 将外键添加到T4模板

时间:2014-06-17 09:23:16

标签: entity-framework ef-code-first entity-framework-6 t4

我正在使用EF 6.1新功能 - 代码优先来自现有数据库 - 我想在每个导航属性之外添加一个外键。 我从nuget添加了默认的T4模板,但我无法弄清楚如何编辑它。我想这应该是一个非常常见的任务,但我无法找到任何例子...... 谢谢 利玛

1 个答案:

答案 0 :(得分:1)

您可以按照here的说明修改用于生成实体类的T4模板。请按照BriceLambson于4月28日下午6:22的评论说明进行操作

您的项目需要以下结构:

  • CodeTemplates
    • EFModelFromDatabase
      • EntityType.cs.t4

文件EntityType.cs.t4必须包含以下link的内容。

之后,您可以更改以下部分:

 
<#
    }

    foreach (var navigationProperty in entityType.NavigationProperties)
    {
        if (!first)
        {
            WriteLine(string.Empty);
        }
        else
        {
            first = false;
        }

#>
        public virtual <#= code.Type(navigationProperty) #> <#=     code.Property(navigationProperty) #> { get; set; }
<#
    }
#>

这样的事情:

 
<#
    }

    foreach (var navigationProperty in entityType.NavigationProperties)
    {
        if (!first)
        {
            WriteLine(string.Empty);
        }
        else
        {
            first = false;
        }

#>
        public int <#= code.Property(navigationProperty) #>ID { get; set; }
        [ForeignKey("<#= code.Property(navigationProperty) #>ID")]
        public virtual <#= code.Type(navigationProperty) #> <#= code.Property(navigationProperty) #> { get; set; }
<#
    }
#>

之后,您可以首先使用现有数据库中的代码生成实体。

希望这有帮助

更新

不是手动创建目录结构,而是可以像Matteo Sganzetta那样安装nuget包EntityFramework.CodeTemplates.CSharp