C# 如何使EF生成更好的多对多键名称

C# 如何使EF生成更好的多对多键名称,c#,entity-framework,t4,C#,Entity Framework,T4,我有以下数据库模式: 简而言之,这是一个交叉参考。零件“A”可以交叉引用多个目标零件 EF生成PartCrossReference,如下所示 public partial class PartCrossReference { public int SourcePartId { get; set; } public int TargetPartId { get; set; } public string CrossType { get; set; } public

我有以下数据库模式:

简而言之,这是一个交叉参考。零件“A”可以交叉引用多个目标零件

EF生成PartCrossReference,如下所示

public partial class PartCrossReference
{
    public int SourcePartId { get; set; }
    public int TargetPartId { get; set; }
    public string CrossType { get; set; }
    public string Source { get; set; }
    public virtual Part Part { get ; set; }
    public virtual Part Part1 { get ; set; }
}

我认为“Part”和“Part1”对于交叉引用的
Part
对象不合适。它们应该是“SourcePart”和“TargetPart”,就像键一样。我如何做到这一点,如果是T4模板,希望您能具体一点,因为这似乎是更深的水。

这在过去对我很有效:

public partial class PartCrossReference
{
    public int SourcePartId { get; set; }
    public int TargetPartId { get; set; }
    public string CrossType { get; set; }
    public string Source { get; set; }
    public virtual Part Part { get ; set; }
    public virtual Part Part1 { get ; set; }
}

ClassExtend:("^/partial/*").Generate();

这是代码第一个模型还是从DB生成EF?MSDN文档称之为“代码第二个”。基本上,这是一个使用电动工具的逆向工程。这是从现有数据库中首先生成的代码。好的。。。您只是希望生成器自动使用SourcePart而不是Part,使用TargetPart而不是Part1。我猜您可以手动将虚拟对象名称从Part和Part1更改为所需的名称。但是,听起来你是在寻求自动化,我希望它是这样生成的,因为我们处于开发的中间,而且我不想每次我重新生成模型时都不得不编辑这个文件。在理想的世界里,我对这个想法很感兴趣。但是为什么不生成一次模型,然后在数据库上启用迁移,并简单地使用代码优先的方法?在这方面,我想到的唯一挑战是Matrix组织,它要求DBA gods可能帮助和/或授权修改PROD db。谢谢Jimmy。你能再详细一点吗?我猜这会出现在T4模板的某个地方。知道在哪里吗?我是t4的新手。