Добавление меток времени с миграциями EF 4.3 - PullRequest
3 голосов
/ 07 марта 2012

Я использую Code First Migrations и изменяю свою модель, чтобы добавить поля меток времени в мои таблицы. Я пытаюсь добавить поля метки времени в моей второй миграции. Вот пример того, как выглядит мой код

public class User {
    public int UserId { get; set; }
    public string UserName { get; set; }      
    public byte[] TimeStamp { get; set; }
}

 public class UserModelConfiguration: EntityTypeConfiguration<User> {
        public UserModelConfiguration() {
            Property(p => p.UserName).IsRequired().HasMaxLength(250);
            Property(p => p.TimeStamp).IsRowVersion();            
        }
    }

Сгенерированная миграция выглядит следующим образом

public override void Up()
        {                
            AddColumn("Users", "TimeStamp", c => c.Binary(nullable: false, fixedLength: true, timestamp: true, storeType: "rowversion"));
        }

Когда я выполняю команду Update-Database, я получаю сообщение об ошибке, которое говорит «Невозможно создать значения по умолчанию для столбцов типа данных timestamp. Таблица« Users », столбец« TimeStamp ». Не удалось создать ограничение"Я перенес все данные из таблицы, но это не решило проблему.

Как мне добавить поле метки времени к этому набору миграции?

Ответы [ 3 ]

6 голосов
/ 07 марта 2012

Используйте nullable:true.Столбец временной метки будет иметь null в спецификации столбца, но он все равно будет заполнен.

0 голосов
/ 02 апреля 2012

К вашему сведению, эта ошибка была исправлена ​​в EF 5.0 beta 2. Лучший обходной путь для предыдущих версий - это то, что уже упоминалось здесь: укажите nullable: true.Спасибо за сообщение о проблеме!

0 голосов
/ 07 марта 2012

Мы только что столкнулись с этой проблемой сегодня. Нашим решением было удалить таблицу, а затем воссоздать ее через миграцию. 2 отдельных скрипта миграции.

Очевидно, что не идеально, если вы хотите сохранить данные, но в нашем случае это не было проблемой.

Было бы интересно услышать о менее хитром решении.

НТН.

...