【问题标题】:How to specify a column Name for EF5 navigation property如何为 EF5 导航属性指定列名称
【发布时间】:2013-06-01 16:43:29
【问题描述】:

我首先使用 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 来做到这一点,但是在多次尝试失败后,我无法获得预期的结果。

附: 'ImagePermission' 实体目前仍在开发中,因此我宁愿放弃创建此表的迁移,以便在创建表期间正确创建此列名,而不是使用其他代码来更新列名。

非常感谢,奥利弗

【问题讨论】:

    标签: entity-framework-5 entity-framework-migrations


    【解决方案1】:

    Fluent API 的正确映射是:

    modelBuilder.Entity<User>()
        .HasMany(u => u.KeepThisNavigationName)
        .WithOptional() // or WithRequired()
        .Map(m => m.MapKey("KeepThisNavigationName_UserId"));
    

    如果ImagePermission 中有一个导航属性引用User,则需要使用WithOptional(i =&gt; i.User)(或WithRequired(i =&gt; i.User))而不是无参数版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      • 1970-01-01
      • 1970-01-01
      • 2013-03-31
      相关资源
      最近更新 更多