2016-11-04 6 views
0

Я пытаюсь переименовать FK по умолчанию, но Code First Migration продолжает генерировать второй FK в той же таблице с другим именем, испорчая схему таблицы.EF-миграция, генерирующая дублированный FK с другим именем

Модель FK имеет PK с именем Id, я просто хочу сохранить соглашение, требуемое моим клиентом, изменив имя для Id (что-то).

1) Сформирован миграция:

Generated Migration

2) Отображение:

Code First Map

Что я должен делать?

ответ

0

Если ваш объект CorpoGestor предоставляет свойство для внешнего ключа, используйте HasForeignKey вместо Map и MapKey.

HasRequired(x => x.Conselho) 
    .WithMany() 
    .HasForeignKey(x => x.IdConselho); 

Другое решение: вы можете использовать атрибут ForeignKey в собственности, а не отображение отношения в CorpoGestorMap классе:

public class CorpoGestor 
{ 
    ... 

    public int IdConselho { get; set; } 

    [ForeignKey("IdConselho")] 
    public virtual Conselho Conselho { get; set; } 
} 

Предупреждение: использование атрибутов сущностей концептуально не так круто как реализация кода в классах сопоставления EntityTypeConfiguration, поскольку вы загрязняете свои сущности кодом уровня данных, который должен храниться в классах EF.