有没有办法表明DateTime对象只有Date值?

时间:2011-02-28 19:06:08

标签: c#

在数据库中,有一些字段是TimeStamp,有些字段是Date,这意味着有些字段接受日期和时间,有些字段只接受日期。

我正在尝试编写一个帮助器类,它可以通过数据对象的属性通过iternate生成SQL,并根据属性的数据类型生成适当的SQL。

所以说,表“SomeDateTimeTable”有TimeStamp字段“A_TimeStamp”和日期字段“A_Date” 然后我的数据对象有两个属性,“public DateTime A_TimeStamp”和“public DateTime A_Date”。

但是因为C#只有DateTime ...我的程序无法区分是DateTime属性指示数据库字段是TimeStamp还是Date ....

我想知道是否还有实现它?

我只能想到...要么创建另一个具有DateTime参数的类来指示它是一个Date类型...或者检查时间是否为00:00:00 ......

但两种方式似乎......不那么聪明?

2 个答案:

答案 0 :(得分:2)

在我看来,这更多地与架构相关而不是与特定值相关联;即往往是所有日期与日期时间,通常不是列中的单个单元格。

有了这个工作假设(可能不符合您的情况),我可能会使用元数据,例如(但不限于):

[DateOnly]
public DateTime Foo {get;set;}

...

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property,
    AllowMultiple=false,Inherited=true)]
public class DateOnlyAttribute : Attribute {}

然后,您可以使用Attribute.IsDefined(member, typeof(DateOnlyAttribute))查看是否按会员设置。

答案 1 :(得分:0)

您可以创建自己的类型(应该是不可变的)或使用属性。