我已经开始使用SubSonic,我想知道如何让它忽略插入时的DateTime属性 . 我正在使用ActiveRecord模板并使用默认方法在数据库端插入时创建日期时间属性 .
当我尝试插入时,我得到以下内容:SqlDateTime溢出 . 必须在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间 .
我宁愿不必在代码中设置日期时间,因为所有项目都将放入队列中,我希望他们在日期时间创建的是创建记录的实际时间 . 有没有办法得到这种行为?
使用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属性仍然存在,所以它也应该工作 .
如果您正在谈论SubSonic ORM for .NET - 您可以尝试在_682612上询问此问题,或发送电子邮件至subsonicproject@googlegroups.com寻求帮助 .
尝试将DateTime定义为参数 . 这里描述了类似的情况 - http://www.devart.com/blogs/dotconnect/?p=2982#first .
3 回答
使用SubSonic 2覆盖BeforeInsert()和BeforeUpdate()方法(已测试并确认)并设置要ReadOnly的列 .
Schema是静态的,所以你可以在代码中执行一次(甚至从类外部执行),不要再担心它,但我更喜欢这种方式 .
我没有尝试使用SubSonic3,但IsReadOnly属性仍然存在,所以它也应该工作 .
如果您正在谈论SubSonic ORM for .NET - 您可以尝试在_682612上询问此问题,或发送电子邮件至subsonicproject@googlegroups.com寻求帮助 .
尝试将DateTime定义为参数 . 这里描述了类似的情况 - http://www.devart.com/blogs/dotconnect/?p=2982#first .