Как мы можем изменить соглашение об именовании внешних ключей в БД в коде EF First CTP5?


Я использую Entity framework 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;}
}

Свинец может быть связан с пользователем. Поле, генерируемое в БД для присвоенных в таблице лидов, называется UserId.

Моя модель полностью независима от entity framework. Поэтому я не хочу использовать атрибуты из EF. Я хотел бы использовать соглашения, если это возможно, назовите поле Например, AssignedToUserId.
1 9

1 ответ:

Я не уверен, что это возможно с подключаемыми соглашениями, но вы можете использовать fluent API для достижения этого:

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