【问题标题】:How to customize foreign key column name using Entity Framework Code-first如何使用实体框架代码优先自定义外键列名
【发布时间】:2011-04-18 09:03:52
【问题描述】:

我有以下型号

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

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

当我首先使用 EF 代码从中生成数据库架构时,它会创建以下表格:

  • Id(PK,int,非空)

酒吧

  • Id(PK,int,非空)
  • 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; }
}

【问题讨论】:

    标签: ef-code-first


    【解决方案1】:

    我认为可以像下面这样:

    受保护的覆盖无效 OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity.Map(c => c.MapKey(u => u.Id, "AssignedToBarID")); }

    或许:

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

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

    【讨论】:

    • 谢谢,您的第二个选项成功了! (必须记住在 Bar 类型上添加一个名为 AssignedToBarId 的属性才能使其工作)
    • 很高兴我能帮上忙。祝你好运。
    • 如果您不需要双向导航,这是一个很好的解决方案。注意:AssignedToBarID 这个名字对我来说有点混乱; AssignedToFooID 会更具说明性。
    猜你喜欢
    • 2017-04-22
    • 2012-05-10
    • 2011-08-05
    • 2011-07-28
    • 2015-02-24
    • 2021-01-05
    • 2011-08-05
    • 1970-01-01
    相关资源
    最近更新 更多