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

Entity framework 实体框架6.1代码首先来自现有数据库-将外键添加到T4模板,entity-framework,ef-code-first,entity-framework-6,t4,Entity Framework,Ef Code First,Entity Framework 6,T4,我正在使用EF 6.1的新功能-首先从现有数据库中获取代码-除了每个导航属性之外,我还想添加一个外键。 我从nuget添加了默认的T4模板,但我不知道如何编辑它。我想这应该是一个很常见的任务,但我找不到任何例子。。。 谢谢 Matteo您可以修改T4模板,该模板用于按照中的说明生成实体类。只需按照BriceLambson在4月28日下午6:22发表的评论中的指示操作即可 项目中需要以下结构: 代码模板 EFModelFromDatabase EntityType.cs.t4 文件En

我正在使用EF 6.1的新功能-首先从现有数据库中获取代码-除了每个导航属性之外,我还想添加一个外键。 我从nuget添加了默认的T4模板,但我不知道如何编辑它。我想这应该是一个很常见的任务,但我找不到任何例子。。。 谢谢
Matteo

您可以修改T4模板,该模板用于按照中的说明生成实体类。只需按照BriceLambson在4月28日下午6:22发表的评论中的指示操作即可

项目中需要以下结构:

  • 代码模板
    • EFModelFromDatabase
      • EntityType.cs.t4
文件EntityType.cs.t4必须包含以下内容

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

<#
    }

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

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

公共虚拟{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; }
<#
    }
#>

公共int ID{get;set;}
[外国钥匙(“ID”)]
公共虚拟{get;set;}
之后,您可以使用-先从现有数据库中编写代码-来生成实体

希望这有帮助

更新
不用手动创建目录结构,只需像Matteo Sganzetta那样安装nuget包
EntityFramework.CodeTemplates.CSharp

您安装了哪个nuget包?这是一个EntityFramework.CodeTemplates.CSharp,如本页所述,非常感谢今晚我将尝试它