Как пропустить столбцы значений по умолчанию при вставке/обновлении в Linq To SQL?

Как вы вставляете/обновляете столбец с помощью Linq To SQL и Linq To SQL, используя значения по умолчанию? В частности, меня беспокоит поле метки времени.

Я попытался установить этот столбец только для чтения и автоматически сгенерировать, поэтому он прекратил попытки вставить DateTime.MinValue, но, похоже, он не обновляется при обновлениях.


person Giovanni Galbo    schedule 23.10.2008    source источник


Ответы (3)


Значение по умолчанию для базы данных будет вставлять значение только при создании строки. Это ничего не даст для обновления, если только вы не захотите добавить триггер.

В качестве альтернативы вы можете добавить разделяемый метод в свой класс DataContext. Добавьте новый файл в свой проект:

public partial class YourDatabaseDataContext
{
    partial void InsertYourTable(YourTable instance)
    {
        instance.LastUpdateTime = DateTime.Now;

        this.ExecuteDynamicInsert(instance);
    }

    partial void UpdateYourTable(YourTable instance)
    {
        instance.LastUpdateTime = DateTime.Now;

        this.ExecuteDynamicUpdate(instance);
    }
person James Curran    schedule 23.10.2008

Вам нужно установить IsVersion=true для столбца метки времени. См. ссылку на ColumnAttribute.

В конструкторе DBML для моих столбцов меток времени установлены свойства

AutoGenerated=true
AutoSync=Always
Nullable, Primary Key, and ReadOnly = false
SQLDataType = rowversion not null
Timestamp = true
UpdateCheck = never

Я предполагаю, что вы действительно имеете в виду метку времени, а не дату и время. Если последнее, игнорируйте это.

person tvanfosson    schedule 23.10.2008

Похоже, вы просто забыли установить для свойства AutoSync значение всегда.

person Sam    schedule 23.10.2008