Как мы можем изменить соглашение об именах внешних ключей в БД в EF Code First CTP5? - PullRequest
9 голосов
/ 25 февраля 2011

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

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

Моя модель полностью независима от структуры сущностей.Поэтому я не хочу использовать атрибуты из EF.Я хотел бы использовать условные обозначения, если это возможно, например, назовите поле AssignedToUserId.

1 Ответ

2 голосов
/ 25 февраля 2011

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

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