Подтвердить что ты не робот

Entity Framework 4.3. Недопустимое имя столбца 'CreatedOn'

Я разрабатываю приложение ASP.NET MVC 4 с использованием VS 2010 и EF 4.3. Он извлекает некоторые данные из внешней базы данных, и все работает так, как ожидалось, пока я не попытался перекомпилировать его в один прекрасный день. После компиляции я получаю следующую ошибку EF:

Недопустимое имя столбца 'CreatedOn'.

Никаких изменений в DB или код не было сделано - я просто добавил некоторые отступы для чтения. Предыдущие версии приложений из TFS также вызывают одно и то же исключение.

У меня нет объектов CreatedOn в моих сущностях и нет такого поля в базе данных, и я не нуждаюсь в нем и не хочу его в любом случае.

Что нужно сделать, чтобы избежать этого исключения?

Это мой пользовательский контекст БД, который я использую для доступа к данным:

public class MyContext<T> : DbContext where T : class, IDataEntity
{
   public MyContext(string connectionKey)
        : base("name=" + connectionKey)
    {
        Configuration.AutoDetectChangesEnabled = false;            
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Label>().Property(item => item.Id).HasColumnName("LabelId");
        modelBuilder.Entity<Label>().Ignore(item => item.ChangedBy);
    }
}

И это класс Label

public class BaseEntity : IDataEntity 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string ChangedBy { get; set; } 
} 

public class Label : BaseEntity 
{ 
}
4b9b3361

Ответ 1

Нашел ответ на мой вопрос. Спасибо всем за ответы.

Database.SetInitializer<MyContext<Label>>(null);

Это устраняет проблему и отключает отслеживание изменений DB в EF.

Ответ 2

В моем случае это был MiniProfiler. Я использую EF 5.0, он использует EF 4.x. После отключения профилировщика исключение больше не выбрасывалось

Ответ 3

EF 4.3.1 добавлен столбец CreatedOn в таблицу __MigrationHistory, которую впоследствии удалил EF 5.0. Я подозреваю, что вы обновили EF до 4.3.1 с момента последнего обновления базы данных.

Вы можете запустить Миграцию, чтобы добавить столбец CreatedOn, вручную добавить его самостоятельно или обновить до EF 5.0, где он больше не нужен.

Ответ 4

На самом деле в таблице __MigrationHistory есть столбец CreateOn, поэтому проблема может быть связана с миграциями EF. Если нет изменений кода, ожидающих миграции или чего-либо, ошибка действительно очень странный случай.

PS. Я нашел это, это может оказаться полезным: http://bstechnical.blogspot.fi/2012/08/invalid-column-name-createdon-code-first.html