多层结构中Model类DataTime属性初始化默认值的问题?

飞之子 2008-12-17 09:48:55
Model类有一构造函数,专用于对类进行初始化,其中有DateTime类型的字段,如:


public class Customer
{
private DateTime _RecordDate;
private DateTime _ChangeDate;

public Customer()
{
this._RecordDate=System.DateTime.MinValue;
this._RecordDate=System.DateTime.MinValue;
}
}



初始化值时遇到一个两难的问题,如果将值初始化为System.DateTime.MinValue,则在写入SqlServer时会由于两者间的最小值不一致导致异常,请问大家有什么好办法处理这种问题。Model最终是传给DAL层用的。

谢谢!
...全文
298 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞之子 2008-12-18
  • 打赏
  • 举报
回复
没有试过?
飞之子 2008-12-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhoufoxcn 的回复:]
难道实例化对象的时候不设置这两个属性吗?如果是这样在插入的时候就不要向这两个字段插入值,在数据库设置默认值getdate(),这样就不会出现这个问题了。
[/Quote]

如果将Model中的DATETIME初始默认值为DateTime.minvalue则在DAL层中就会报错,因为当向存储过程传递参数时就需要转换为SqlDbtype的。根本到不了存储过程那地方,GetDate()自然也就没可能实现了.如:

db.CreateInParameter("@R6",System.Data.SqlDbType.DateTime,16,Customer.R6),
db.CreateInParameter("@R7",System.Data.SqlDbType.DateTime,16,Customer.R7),


哪此,R6必须初始为既被C#认可的值,又被SQL SERVER认可的值。
che2piaopiao 2008-12-17
  • 打赏
  • 举报
回复
难道实例化对象的时候不设置这两个属性吗?如果是这样在插入的时候就不要向这两个字段插入值,在数据库设置默认值getdate(),这样就不会出现这个问题了。
飞之子 2008-12-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hhwyss 的回复:]
1:DateTime.Now

DateTime.Now是不行的。从业务上讲有些字段必须保留空值,或表示未设置时间的值。

周公 2008-12-17
  • 打赏
  • 举报
回复
难道实例化对象的时候不设置这两个属性吗?如果是这样在插入的时候就不要向这两个字段插入值,在数据库设置默认值getdate(),这样就不会出现这个问题了。
hhwyss 2008-12-17
  • 打赏
  • 举报
回复
varchar没有必要

hhwyss 2008-12-17
  • 打赏
  • 举报
回复
1:DateTime.Now

2:Nullable<DateTime>

lizhengnan 2008-12-17
  • 打赏
  • 举报
回复
为什么不用当前日期做为初始值.

如果非要存最小值,可以把数据库的数据类型定义成varchar型的,这不就没有限制了吗
飞之子 2008-12-17
  • 打赏
  • 举报
回复
网上有些人说干脆在设计数据库时便将字段类型设计为varchar,这样我想对查查询会有问题,因为需要照顾这里而引发了更多的问题。
也有人说在类中将其类型定义为object,但由觉得不太好。

62,046

社区成员

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

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

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

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