我首先使用EF5代码生成我的数据库模式,但我的新导航属性在表中以不受欢迎的方式命名。这是我正在使用的模型。
public class User
{
[Key]
public long UserId { get; set; }
...
**public virtual ICollection<ImagePermission> KeepThisNavigationName { get; set; }**
}
但是,在我更新了数据库并检查表列之后,该列的名称为:
dbo.ImagePermission.User_UserId
我希望它被命名为
dbo.ImagePermission.KeepThisNavigationName_UserId
我相信使用Fluent API有一种方法可以做到这一点,但经过多次尝试失败后,我无法获得理想的结果。
P.S。 'ImagePermission'实体目前仍处于开发阶段,因此我更愿意删除创建此表的迁移,以便在创建表时正确创建此列名,而不是使用其他代码来更新列名。
非常感谢,奥利弗
答案 0 :(得分:4)
使用Fluent API的正确映射是:
modelBuilder.Entity<User>()
.HasMany(u => u.KeepThisNavigationName)
.WithOptional() // or WithRequired()
.Map(m => m.MapKey("KeepThisNavigationName_UserId"));
如果ImagePermission
中的导航属性引用User
,则需要使用WithOptional(i => i.User)
(或WithRequired(i => i.User)
)而不是无参数版本。