您现在的位置: 365建站网 > 365学习 > Castle的Nullables和。net空值处理

Castle的Nullables和。net空值处理

文章来源:365jz.com     点击数:265    更新时间:2009-09-20 08:58   参与评论
晚上在一个开源群里,一个朋友提出了个关于使用castle时候空值处理的问题

要在字段里插入空值

castle有提供一组空值类型,可以如下实现:
[Property]

public NullableDateTime CreatedDate

{

    
get return _createdDate; }

    
set { _createdDate = value; }

}


 

[Property]

public NullableInt32 Count

{

    
get return _count; }

    
set { _count = value; }

}

ActiveRecord提供的空属类型与实际类型对照表XML:NAMESPACE PREFIX = O />

CLR Basic Type

Nullable Type

System.Boolean

Nullables.NullableBoolean

System.Byte

Nullables.NullableByte

System.Char

Nullables.NullableChar

System.DateTime

Nullables.NullableDateTime

System.Decimal

Nullables.NullableDecimal

System.Double

Nullables.NullableDouble

System.Guid

Nullables.NullableGuid

System.Int16

Nullables.NullableInt16

System.Int32

Nullables.NullableInt32

System.Int64

Nullables.NullableInt64

System.SByte

Nullables.NullableSByte

System.Single

Nullables.NullableSingle

注意在使用空属类型时需要添加以下引用

Nullables.dll

Nullables.NHibernate.dll

【上面引用了TerryLee老师的一些博客资料】



但是在使用的时候出现一些转换上的问题,看起来不兼容的样子,具体代码情况那位朋友没有说清楚,
只是需要在一个字段插入Null值

于是我提出说可以直接设置NotNull=false 就可以忽略初始化时候赋值,
但是这样做的结果是 int字段的值自动填为0,也就是说这样设置依然有在持久化的时候使用该属性,并设置了默认的值

那么Nullable类型的属性看来是很有必要的了,

回头想想,.net很强大,对这种情况会没有考虑到吗?
不知你是否注意到int? i;这样的声明。

嗯,这就是解决问题的方法~

private int? _count;
[Property]
public int? Count
{
get { return _count; }
set { _count = value; }
}


问题就这样解决~

。net2.0开始,支持空值,这样就不会再自动默认为0了~呵呵 不知道在看书的时候是否忘记还有这么个好用的特性呢~^^
作者:wsky (huangxu)
出处:http://wsky.cnblogs.com/
以上文字若无注明转载字样则为个人原创,转载请保留签名
Tag标签: c#,Castle,ORM,空值,Nullables

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (265人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------