EF 4.1 генерирует поле [Name] _Id вместо [Name] Id, проблема, связанная с FK - PullRequest
2 голосов
/ 27 июня 2011

У меня есть такой класс:


public class Target
{
    [Key]
    [Column("TargetId")]
    public Guid Id { get; set; }

    [ForeignKey("TargetInventory")]
    public Guid? TargetInventoryId { get; set; }
    public virtual TargetInventory TargetInventory { get; set; }
}

На DbContext только это:


protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove();
}

В базе данных у меня есть FK с именем 'FK_Target_TargetInventory' и полем 'TargetInventoryId'.

С EF 4 он работал, но на 4.1 он генерирует недопустимое имя поля 'TargetInventory_Id' вместо 'TargetInventoryId'.Исключение:

Не удалось выполнить операцию загрузки для запроса 'GetAll'.Произошла ошибка при выполнении определения команды.Смотрите внутреннее исключение для деталей.Внутреннее исключительное сообщение: недопустимое имя столбца 'TargetInventory_Id'.

Что может быть не так?

Редактировать 1

Кодовый тег плохо рендерится (я думаю, вы понимаете, что он означает): modelBuilder.Conventions.Remove << 'IncludeMetadataConvention' >> ();Я раньше не говорил свободно, и это сработало, я не хочу иметь логику вне основного класса.Сейчас я попробую различные тесты, поскольку я обнаружил, что похожий код работает в другом классе.

1 Ответ

0 голосов
/ 27 июня 2011

Какое соглашение вы удаляете?Не трогай условности.Они отвечают за автоматическое сопряжение свойства FK со свойством навигации, а также за преобразование аннотаций данных в сопоставление.Если ваш код должен означать, что вы удаляете все условные обозначения, вы должны настроить все с помощью свободного API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...