晚上在一個(gè)開(kāi)源群里,一個(gè)朋友提出了個(gè)關(guān)于使用castle時(shí)候空值處理的問(wèn)題
要在字段里插入空值
castle有提供一組空值類(lèi)型,可以如下實(shí)現(xiàn):
[Property]

public NullableDateTime CreatedDate



{


get
{ return _createdDate; }


set
{ _createdDate = value; }

}


[Property]

public NullableInt32 Count



{


get
{ return _count; }


set
{ _count = value; }

}
ActiveRecord提供的空屬類(lèi)型與實(shí)際類(lèi)型對(duì)照表
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 |
注意在使用空屬類(lèi)型時(shí)需要添加以下引用
Nullables.dll

Nullables.NHibernate.dll
【上面引用了TerryLee老師的一些博客資料】
但是在使用的時(shí)候出現(xiàn)一些轉(zhuǎn)換上的問(wèn)題,看起來(lái)不兼容的樣子,具體代碼情況那位朋友沒(méi)有說(shuō)清楚,
只是需要在一個(gè)字段插入Null值
于是我提出說(shuō)可以直接設(shè)置NotNull=false 就可以忽略初始化時(shí)候賦值,
但是這樣做的結(jié)果是 int字段的值自動(dòng)填為0,也就是說(shuō)這樣設(shè)置依然有在持久化的時(shí)候使用該屬性,并設(shè)置了默認(rèn)的值
那么Nullable類(lèi)型的屬性看來(lái)是很有必要的了,
回頭想想,.net很強(qiáng)大,對(duì)這種情況會(huì)沒(méi)有考慮到嗎?
不知你是否注意到int? i;這樣的聲明。
嗯,這就是解決問(wèn)題的方法~
private int? _count;
[Property]
public int? Count
{
get { return _count; }
set { _count = value; }
}
問(wèn)題就這樣解決~
。net2.0開(kāi)始,支持空值,這樣就不會(huì)再自動(dòng)默認(rèn)為0了~呵呵 不知道在看書(shū)的時(shí)候是否忘記還有這么個(gè)好用的特性呢~^^
作者:wsky (huangxu)
出處:http://wsky.cnblogs.com/
以上文字若無(wú)注明轉(zhuǎn)載字樣則為個(gè)人原創(chuàng),轉(zhuǎn)載請(qǐng)保留簽名
Tag標(biāo)簽: c#,Castle,ORM,空值,Nullables