Как я могу позволить sql установить datetime с дозвуковой - PullRequest
0 голосов
/ 15 ноября 2010

Я начал использовать SubSonic, и мне интересно, как заставить его игнорировать свойства DateTime при вставке.Я использую шаблон ActiveRecord и у меня есть методы по умолчанию для создания свойств datetime при вставке на стороне БД.

Когда я пытаюсь вставить, я получаю следующее: SqlDateTime переполнение.Должно быть между 01.01.1753 12:00:00 и 31.12.9999 23:59:59.

Я бы не стал устанавливать дату и время в коде, так как все элементы попадуточередь, и я хотел бы, чтобы их созданные в datetime были точным временем создания записи.Есть ли способ получить такое поведение?

Ответы [ 3 ]

1 голос
/ 13 декабря 2010

Переопределите методы BeforeInsert () и BeforeUpdate () (протестировано и подтверждено) с помощью SubSonic 2 и задайте столбцы, для которых требуется ReadOnly.

public partial class Products
{
    protected override void BeforeInsert()
    {
        Schema.GetColumn(Columns.CreatedOn).IsReadOnly = true;
        base.BeforeInsert();
        Schema.GetColumn(Columns.CreatedOn).IsReadOnly = false;
    }

    protected override void BeforeUpdate()
    {
        Schema.GetColumn(Columns.ModifiedOn).IsReadOnly = true;
        base.BeforeUpdate();
        Schema.GetColumn(Columns.ModifiedOn).IsReadOnly = false;
    }
}

Схема статична, поэтому вы можете сделать это один раз в своем коде (даже вне класса) и больше не беспокоиться об этом, но я бы предпочел этот способ.

Я не пробовал это с SubSonic3, но свойство IsReadOnly все еще там, поэтому оно тоже должно работать.

0 голосов
/ 13 декабря 2010

Попробуйте определить DateTime в качестве параметра.Подобная ситуация описана здесь - http://www.devart.com/blogs/dotconnect/?p=2982#first.

0 голосов
/ 15 ноября 2010

Если вы говорите о SubSonic ORM для .NET - вы можете попробовать задать этот вопрос в блоге поддержки SubSonic или отправить по электронной почте subsonicproject@googlegroups.com с просьбой о помощи.

...