困扰很久的问题,关于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的值?
...全文
89 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());
本课程采用了漫画+动手实操+练习讲授Python编程技能。课程简介:第11章 常用内置模块11.1 数学计算模块 —— math模块11.2 日期时间模块 —— datetime模块11.2.1 datetime类11.2.2 date类11.2.3 time类11.2.4 计算时间跨度类——timedelta11.2.5 将日期时间对象与字符串相互转换11.3 正则表达式模块 —— re模块11.3.1 字符串匹配11.3.2 字符串查找11.3.3 字符串替换11.3.4 字符串分割11.5 练一练第12章 文件读写12.1 打开文件12.2 关闭文件12.2.1 在finally代码块中关闭文件12.2.2 在with as代码块中关闭文件12.3 读写文本文件12.4 动动手 —— 复制文本文件12.5 读写二进制文件12.6 动动手 —— 复制二进制文件12.1 练一练第13章 图形用户界面13.1 Python中的图形用户界面开发库13.2 安装wxPython17813.3 第一个wxPython程序18013.4 自定义窗口类18213.5 在窗口中添加控件18213.6 事件处理18413.7 布局管理18513.7.1 盒子布局管理器18613.7.2 动动手——重构事件处理示例13.7.3 动动手——盒子布局管理器嵌套示例13.8 控件13.8.1 文本输入控件13.8.2 复选框和单选按钮13.8.3 列表13.8.4 静态图片控件13.9 点拨点拨 —— 如何使用wxPython官方文档13.10 练一练第14章 网络通信14.1 基本的网络知识14.1.1 TCP/IP14.1.2 IP地址14.1.3 端口14.1.4 HTTP/HTTPS14.2 搭建自己的Web服务器14.3 urllib.request模块14.3.1 发送GET请求14.3.2 发送POST请求14.4 JSON数据14.4.1 JSON文档的结构14.4.2 对JSON数据的解码14.5 动动手 —— 下载图片示例14.6 动动手 —— 返回所有备忘录信息14.7 练一练第15章 访问数据库15.1 SQLite15.1.1 SQLite的数据类型15.1.2 Python的数据类型与SQLite的数据类型的映射15.1.3 使用GUI管理工具管理SQLite15.2 数据库编程的基本操作过程15.3.1 数据库连接对象Connection15.3.2 游标对象Cursor15.4 动动手 —— 数据库的CRUD操作示例15.4.1 示例中的数据表15.4.2 无条件查询15.4.3 有条件查询15.4.4 插入数据15.4.5 更新数据15.4.6 删除数据15.5 点拨点拨 —— 防止SQL注入攻击15.6 练一练第16章 多线程16.1 线程相关的知识16.1.1 进程16.1.2 线程16.1.3 主线程16.2 线程模块 —— threading模块16.3 创建子线程16.3.1 自定义函数实现线程体16.3.2 自定义线程类实现线程体16.4 线程管理16.4.1 等待线程结束16.4.2 线程停止16.5 动动手 —— 下载图片示例16.6 练一练

62,046

社区成员

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

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

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

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