如何在EF Code First CTP5中更改DB中外键的命名约定?

Eti*_*neT 9 entity-framework code-first entity-framework-ctp5

我正在使用实体框架Code First CTP5,我试图找到一种方法来添加一个约定来改变外键名称的生成方式.这是一个例子:

public class Lead
{
    public int Id {get; set;}
    // A lot of other fields
    public virtual User AssignedTo { get; set; }
}

public class User
{
    public int Id {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

潜在客户可以与用户相关联.在Leads表的DB for AssignedTo中生成的字段称为UserId.

我的模型完全独立于实体框架.所以我不想使用EF的属性.我想在可能的情况下使用约定将字段命名为AssignedToUserId.

Mor*_*avi 2

我不确定这是否可以通过可插入约定实现,但您可以使用流畅的 API 来实现它:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Lead>()
                .HasRequired(l => l.AssignedTo)
                .WithMany()
                .IsIndependent()
                .Map(c => c.MapKey(u => u.Id, "AssignedToUserId"));
}
Run Code Online (Sandbox Code Playgroud)

  • 是的,这就是我现在正在做的事情。但我不想每次添加新关系时都必须这样做:)。 (4认同)