Castle ActiveRecord 中空值处理

来源:互联网 发布:mpi编程手册 pdf 编辑:程序博客网 时间:2024/05/01 09:06

 我们经常会遇到某个字段可以为空的情况,以下面的Users这个类为例,Birthday这个字段是允许为空值的。

 

// 
// Generated by ActiveRecord Generator
// 
//
using Castle.ActiveRecord;


[ActiveRecord(
"Users")]
public class Users : ActiveRecordBase
{
    
    
private int _logonID;
    
    
private string _logonName;
    
    
private string _password;
    
    
private string _emailAddress;
    
    
private System.DateTime _lastLogon;
    
    
private bool _available;

    
private System.DateTime  _birthday;
    [PrimaryKey(PrimaryKeyType.Native)]
    
public int LogonID
    {
        
get
        {
            
return this._logonID;
        }
        
set
        {
            
this._logonID = value;
        }
    }
    
    [Property()]
    
public string LogonName
    {
        
get
        {
            
return this._logonName;
        }
        
set
        {
            
this._logonName = value;
        }
    }
    
    [Property()]
    
public string Password
    {
        
get
        {
            
return this._password;
        }
        
set
        {
            
this._password = value;
        }
    }
    
    [Property(NotNull
=true)]
    
public string EmailAddress
    {
        
get
        {
            
return this._emailAddress;
        }
        
set
        {
            
this._emailAddress = value;
        }
    }

    [Property(Insert 
= false)]
    
public System.DateTime LastLogon
    {
        
get
        {
            
return this._lastLogon;
        }
        
set
        {
            
this._lastLogon = value;
        }
    }
    
    [Property( Insert
=false)]
    
public bool Available
    {
        
get
        {
            
return this._available;
        }
        
set
        {
            
this._available = value;
        }
    }
    [Property()]
    
public System.DateTime  Birthday
    {
        
get
        {
            
return this._birthday;
        }
        
set
        {
            
this._birthday = value;
        }
    }

    
public static void DeleteAll()
    {
        ActiveRecordBase.DeleteAll(
typeof(Users));
    }
    
    
public static Users[] FindAll()
    {
        
return ((Users[])(ActiveRecordBase.FindAll(typeof(Users))));
    }
    
    
public static Users Find(int LogonID)
    {
        
return ((Users)(ActiveRecordBase.FindByPrimaryKey(typeof(Users), LogonID)));
    }
}

如果不对以上代码做些处理,则会出现以下错误:

SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。 

解决方案如下:

private System.DateTime? _birthday;
[Property()]
    
public System.DateTime? Birthday
    {
        
get
        {
            
return this._birthday;
        }
        
set
        {
            
this._birthday = value;
        }
    }

以上代码告诉框架Birthday字段可以为空值,这样框架就能够正确的去处理。当然还可以采用其他的方法比如:使用框架自带的空属性。我个人还是倾向于第一种方法,比较简单。

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 护肤品酒精含量太高怎么办 父母出国三年想孩子怎么办 孩子高考不理想想出国怎么办 交大附中创新班剩余孩子怎么办 棋牌开发公司倒闭了怎么办 7月1日本地流量怎么办 装电池的弹簧生锈了怎么办 电器被电池碱了怎么办 车辆被交警拖走怎么办 香烟熏的眼睛疼怎么办 想在中牟住5天怎么办 腰弯了直不了怎么办 自考科目停考了怎么办 把wlan密码忘了怎么办 滕州不给报新婚怎么办 体内锁水能力差怎么办 别人说你人品差怎么办 面对没素质的人怎么办 遇到很坏的室友怎么办 餐饮员工与顾客发生矛盾怎么办 新员工老员工出现矛盾怎么办 手机移动4g网慢怎么办 碰到素质低的老公怎么办 小孩做事拖拉 没时间观念怎么办 execl表中日期加3.5怎么办 狗狗喜欢咬人怎么办 烧烤一顿吃多了怎么办 派派背包食物不足怎么办 未转变者下不了怎么办 小升初户籍与房产不一致怎么办 小孩在外地读书怎么办计生证明 泉州居住证要半年小孩读书怎么办 孩子上学有兰山户口没有房产怎么办 培训机构跑路了怎么办 报的培训班跑路怎么办 巡视组举报后会怎么办 巡视组交办不办怎么办 分手以后还要不要联系忘不了怎么办 父母穷且不上进怎么办 惹父母生气了该怎么办 小孩戒奶不吃奶粉怎么办