2015-10-25 7 views
2

У меня есть два EntityУдалить имя таблицы префикс в EF коде первого ключевого столбец внешней таблицы

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_RoomID). Как я могу это сделать?

ответ

1

У вас есть несколько вариантов, чтобы сделать это:

  1. заявляют, что RoomId FK собственность в 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 условность создает имя столбца так же как и имя свойства.

  2. Если вы не хотите, чтобы объявить FK свойство RoomId в вашем Member сущности, вы можете переопределить OnModelCreating метод в контексте класса настроить отношения и укажите имя FK с помощью метода MapKey:

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
        modelBuilder.Entity<Member>().HasRequired(m=>m.Room).WithMany(r=>r.ListMember).Map(a => a.MapKey("RoomId")) 
    } 
    

Теперь, в случае, если вы объявляете FK свойство RoomId, но вы хотите изменить имя этого столбца в вашем Members таблице, вы можете использовать Column д ata аннотация.