首页 文章

如何让sql用亚音速设置日期时间

提问于
浏览
0

我已经开始使用SubSonic,我想知道如何让它忽略插入时的DateTime属性 . 我正在使用ActiveRecord模板并使用默认方法在数据库端插入时创建日期时间属性 .

当我尝试插入时,我得到以下内容:SqlDateTime溢出 . 必须在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间 .

我宁愿不必在代码中设置日期时间,因为所有项目都将放入队列中,我希望他们在日期时间创建的是创建记录的实际时间 . 有没有办法得到这种行为?

3 回答

  • 0

    使用SubSonic 2覆盖BeforeInsert()和BeforeUpdate()方法(已测试并确认)并设置要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;
        }
    }
    

    Schema是静态的,所以你可以在代码中执行一次(甚至从类外部执行),不要再担心它,但我更喜欢这种方式 .

    我没有尝试使用SubSonic3,但IsReadOnly属性仍然存在,所以它也应该工作 .

  • 0

    如果您正在谈论SubSonic ORM for .NET - 您可以尝试在_682612上询问此问题,或发送电子邮件至subsonicproject@googlegroups.com寻求帮助 .

  • 1

    尝试将DateTime定义为参数 . 这里描述了类似的情况 - http://www.devart.com/blogs/dotconnect/?p=2982#first .

相关问题