困扰很久的问题,关于DateTime类型的Property

eidolon 2003-09-12 03:31:28
对于一个表,我把它映射到一个包含属性的.cs中,比如是这样:
Aa.cs:
private DateTime userDate;
public DateTime UserDate
{
get{return userDate;}
set{userDate = value;}
}

当我在某些方法给他赋值的时候,如果这个Property可以为Null,那么我该怎么办,因为这是一个值类型,直接给Null或者DBNull.Value肯定不行,难道给一个Default的值?
...全文
86 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
LevinForum 2003-09-12
  • 打赏
  • 举报
回复
public YourClass
{
SqlDateTime dt=SqlDateTime.Null;
public SqlDateTime Value
{
get
{
return dt;
}
set
{
dt=value;
}
}
}

get..:

if(yc.Value.IsNull)
TextBox1.Text="<notset>";
else
TextBox1.Text=yc.Value.Value.ToString("yyyy-MM-dd");
//or TextBox1.Text=((DateTime)yc.Value).ToString("yyyy-MM-dd");

set..:

if(....)
yc.Value=DateTime.Now;
else
yc.Value=SqlDateTime.Null;
eidolon 2003-09-12
  • 打赏
  • 举报
回复
嗯,如果换成object是可以...
那么如果是SqlDataTime有什么区别呢?同样是ValueType啊?而且我看到LLBLGen自动生成的代码也都是使用这样的写法,而不是DateTime
LevinForum 2003-09-12
  • 打赏
  • 举报
回复
....
1.
public object Value
{
get;set;
}

2.
public System.Data.SqlTypes.SqlDateTime Value
{
get;set;
}
eidolon 2003-09-12
  • 打赏
  • 举报
回复
甚至我可以给一个默认值,然后在给SP参数的时候再判断如果是默认值就更改为DBNull.Value,只不过还是觉得有点麻烦,所以我想知道有什么其他好的办法?
eidolon 2003-09-12
  • 打赏
  • 举报
回复
因为如果我直接跳过属性给参数的话就可以直接给Null值,如果给一个默认值,我当然知道要怎么做,但是这样检索的时候就必须要过滤掉这个默认值而显示给用户空值,我现在就是这样做,但是这样很麻烦不是吗?
csdn_bob 2003-09-12
  • 打赏
  • 举报
回复
楼主的问题在于
r.Now = null;//这样写是不行的,因为DateTime是值类型,如果是引用类型的就可以了
所以无论怎样还是有一个值的.
goody9807 2003-09-12
  • 打赏
  • 举报
回复
1.agree csdn_bob(文子)

2.判断一下,If Not Isdbnull(UserDate) then
...赋值
Else
什么也不作
End if


kyo1209 2003-09-12
  • 打赏
  • 举报
回复
你到底想怎样,说清楚点
chnking 2003-09-12
  • 打赏
  • 举报
回复
private DateTime userDate;
public DateTime UserDate
{
get{
if(userDate == null)
return DateTime.Now();
else
return userDate;
}
set{userDate = value;}
}
eidolon 2003-09-12
  • 打赏
  • 举报
回复
那样插入数据库就不是Null了,如果检索出来的话是不是就是要过滤掉了...我现在就是这样做
eidolon 2003-09-12
  • 打赏
  • 举报
回复
楼上的,这是什么意思呢?
比如我有一个User对象,User object中的某些DateTime的属性可以为Null,我要怎么办?
csdn_bob 2003-09-12
  • 打赏
  • 举报
回复
就用new DateTime()就OK了,是为0001-1-1 0:00:00
csdn_bob 2003-09-12
  • 打赏
  • 举报
回复
t r = new t();
r.Now = DateTime.Now;
Console.Write(r.Now.ToString());

r.Now = new DateTime();
Console.Write(r.Now.ToString());

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧