2011-02-28 42 views
0

在数据库中,有一些字段是TimeStamp,有些字段是Date,这意味着某些字段接受日期和时间,一些字段仅接受日期。有没有办法指出DateTime对象只有Date值?

我想写一个助手类,它可以通过iternate通过数据对象的属性生成SQL,并通过属性的数据类型生成适当的SQL。

所以说,表“SomeDateTimeTable”有时间戳字段“A_TimeStamp”和日期字段“A_Date” 后来我的数据对象有两个属性,“公众的DateTime A_TimeStamp”和“公共的DateTime A_Date”。

但因为C#不仅具有日期时间...我的程序不能区分的日期时间属性表示数据库中的字段是时间戳或日期....

我不知道是否有反正acheive呢?

我只能想到...要么使有日期时间参数表明这是一个Date类型...或检查的时间是00:00:00另一个阶级......

但这两种方式看起来......不那么聪明?

+1

(假设您使用的是SQL Server)确保区分时间戳,日期时间和日期。 AFAIK,时间戳数据类型是不透明的:它是由服务器生成的,并不意味着被读作日期数据。 – Humberto 2011-02-28 19:12:29

回答

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)),看它是否被设置per-会员。

+0

非常感谢,这是我想要做的。我现在学到一些东西,再次感谢! – King 2011-02-28 20:07:01

0

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

相关问题