如何使用Entity Framework Code-first自定义外键列名

Whe*_*lie 9 ef-code-first

我有以下型号

public class Foo
{
    public int Id { get; set; }
    public IList<Bar> Bars { get; set; }
}

public class Bar
{
    public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我使用EF代码从此生成数据库模式时,它首先创建以下表:

  • Id(PK,int,not null)

酒吧

  • Id(PK,int,not null)
  • Foo_Id(FK,int null)

是否可以使用属性更改Foo_Id外键的名称?

编辑:这是我需要的版本:

public class Foo
{
    public int Id { get; set; }

    [ForeignKey("AssignedToBarId")]
    public IList<Bar> Bars { get; set; }
}

public class Bar
{
    public int AssignedToBarId { get; set; }
    public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Kam*_*yar 8

我认为可以像下面这样做:

protected override void OnModelCreating(ModelBuilder modelBuilder){modelBuilder.Entity.Map(c => c.MapKey(u => u.Id,"AssignedToBarID")); }

或者可能:

[ForeignKey("AssignedToBarID")]
public IList<Bar> Bars { get; set; }
Run Code Online (Sandbox Code Playgroud)

注意:我没有测试过它们.这些只是建议.

  • 谢谢,你的第二个选择就行了!(必须记住在名为AssignedToBarId的Bar类型上添加一个属性才能生效) (2认同)