Почему моя конфигурация EF CodeFirst не использует указанное свойство внешнего ключа? - PullRequest
0 голосов
/ 20 июня 2011

У меня есть следующая модель:

public class Hotfix
{
    public int? released_version { get; set; }
    public virtual ReleaseVersion ReleasedVersion { get; set; }
}

В моем классе картирования (который правильно просматривается) у меня есть:

            this.Property(t => t.released_version).HasColumnName("released_version");
        this.HasOptional(t => t.ReleasedVersion)
            .WithMany(t => t.ReleaseVersionForHotfix)
            .HasForeignKey(d => d.released_version);

Однако, когда я выполняю запрос, такой как _context.Hotfixes.ToList(), я получаю исключение Invalid column name 'ReleaseVersion_id'..

Почему он ищет столбец ReleaseVersion_id, когда ему говорят, что столбец должен быть сопоставлен с released_version?

Это использует CodeFirst в существующей базе данных

1 Ответ

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

Хорошо, я наконец-то понял это, и, видимо, это произошло из-за того, что какой-то код не показан.Кажется, есть ошибка в плавном отображении EF, когда существуют дополнительные свойства, которые не отображаются.Я должен был показать структуру ReleaseVersion, которая выглядит следующим образом:

public class ReleaseVersion
{
    public int id { get; set; }

    public virtual ICollection<Hotfix> CurrentVersionForHotfix { get; set; }
    public virtual ICollection<Hotfix> ReleaseVersionForHotfix { get; set; }
    public virtual ICollection<Hotfix> hotfixes2 { get; set; }
}

Что важно, так это дополнительное свойство hotfixes2.Это свойство было создано электроинструментами EF 4.1 CodeFirst, но я не удалил его, потому что сначала хотел, чтобы все работало.

В любом случае, свойство hotfixes2 не имело сопоставления отношений в классе сопоставления конфигурации EF исправления, но по какой-то причине это одно дополнительное свойство вызывало игнорирование всей конфигурации исправления.Простое удаление свойства hotfixes2 из ReleaseVersion POCO заставило мое приложение работать без ошибок.

...