我有两个实体
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/