如何在一个实体上将EF map NavigationProperty设置为另一个实体的Collection

时间:2012-08-13 13:23:49

标签: c# .net entity-framework-4.1

我想要两个实体之间直接的外键关系,EF属性是双向的。但是,此时EF正在生成表示关系的每个方向的2个外键。如何让EF将它们视为单一财产?下面分别使用外键字段Script_Id和Script_Id1生成两个名为Script_ScriptRuns和ScriptRun_Script的数据库外键约束

public class Script
{
    [Key]
    public Guid Id { get; set; }

    public virtual ICollection<ScriptRun> ScriptRuns { get; set; }
}


public class ScriptRun
{
    [Key]
    public Guid Id { get; set; }

    [Required]
    public virtual Script Script { get; set; }
}

1 个答案:

答案 0 :(得分:1)

使用您发布的代码,它只为我创建了一个FK - ScriptRun类中的Script_Id。

您是否只想重命名在该课程中创建的FK?您可以通过映射DbContext中的列来实现。这会将它映射到ScriptId:

        modelBuilder.Entity<Script>()
            .HasMany(s => s.ScriptRuns)
            .WithRequired(sc => sc.Script)
            .Map(x => x.MapKey("ScriptId"));

如果没有,你可以张贴整个模型吗?