Как мы можем изменить соглашение об именовании внешних ключей в БД в EF Code 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;}
}

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

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

1 ответ

Решение

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

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Lead>()
                .HasRequired(l => l.AssignedTo)
                .WithMany()
                .IsIndependent()
                .Map(c => c.MapKey(u => u.Id, "AssignedToUserId"));
}
Другие вопросы по тегам