在数据库中,有一些字段是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 ......
但两种方式似乎......不那么聪明?
答案 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)
您可以创建自己的类型(应该是不可变的)或使用属性。