entity-framework - 删除 EF 代码第一个外键表列中的表名前缀

标签 entity-framework ef-code-first foreign-keys columnname

我有两个实体

Room{
    [Key]
    public int RoomID {get;set;}
    public String RoomName {get;set;}
    public List<Member> ListMember {get;set;}
}

Member {
    [Key]
    public int MemberID {get;set;}
    public String MemberName {get;set;}
    public Room Room {get;set;}
}

生成数据库时,表成员看起来像:
Member(
    MemberID int,
    MemberName nvarchar.
    Room_RoomID int   //references to Room(RoomID)
)

我希望外键列有名称 RoomID (与 Room 的原始名称相同)而不是 (Room_RoomID) .
我怎样才能做到这一点?

最佳答案

您有多种选择可以做到这一点:

  • 声明 RoomId FK属性(property)在Member实体和使用ForeignKey数据注释:
    public classMember {
        [Key]
        public int MemberID {get;set;}
        public String MemberName {get;set;}
    
        [ForeignKey("Room")]
        public int RoomID {get;set;}
        public Room Room {get;set;}
    }
    

    Code First 约定创建与属性名称相同的列名称。
  • 如果您不想声明 RoomId您的 FK 属性(property) Member实体,您可以覆盖 OnModelCreating上下文类中的方法
    配置您的关系并使用MapKey方法:
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Member>().HasRequired(m=>m.Room).WithMany(r=>r.ListMember).Map(a => a.MapKey("RoomId")) 
    }
    

  • 现在,如果您声明 RoomId FK 属性,但您想更改 Members 中该列的名称table ,您可以使用 Column数据注释。

    关于entity-framework - 删除 EF 代码第一个外键表列中的表名前缀,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33324886/

    相关文章:

    entity-framework - EF Core 3 具有值(value)生成器

    c# - Elmah DDL 在由 context.Database.ExecuteSqlCommand (EF4.1) 运行时给出 sql 错误

    c# - Entity Framework 代码优先通过关系表导航属性

    sql - SQL 2005中检查外键是否存在的方法

    mysql - SQL 外键约束的形成不正确

    c# - 实体之间的一对一关系不适用于 Entity Framework 6

    entity-framework - 手动 DAL & BLL 与 ORM

    C# EF 代码首先部署到 Godaddy

    entity-framework - 首先在 EF 代码中作为组合键的一部分的文字或常量

    django - 为什么删除时我的 GenericForeignKey 不会级联?