我有两个实体
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)
。
我怎么能这样做?
答案 0 :(得分:1)
您有多种选择:
在RoomId
实体中声明Member
FK属性并使用
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
实体中声明Member
FK属性,则可以在上下文类中覆盖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"))
}
现在,如果您声明RoomId
FK属性但想要更改Members
表中该列的名称,则可以使用Column数据注释。< / p>