2014-10-09 48 views
0

我有一个System.DateTime的CreatedDate成员,该成员的默认值为Today(没有时间组件)。此外,“今日”的“日期”值被高速缓存,并且是应用程序启动的日期。如果重新启动进程,通常不会造成问题,但在长时间运行的Windows服务中使用时,此Date值会过时。DevForce 2012中DateTime的默认值

例如:

从我的EDMX

/// <summary>Gets or sets the CreatedDate. </summary> 
[DataMember] 
[Bindable(true, BindingDirection.TwoWay)] 
[Editable(true)] 
[Display(Name="CreatedDate", AutoGenerateField=true)] 
[IbVal.RequiredValueVerifier(ErrorMessageResourceName="ServiceRequest_CreatedDate")] 
public System.DateTime CreatedDate { 
    get { return PropertyMetadata.CreatedDate.GetValue(this); } 
    set { PropertyMetadata.CreatedDate.SetValue(this, value); } 
} 

代码

 var request = new ServiceRequest(); 

     // request.CreatedDate will be the date the app started not a new call to DateTime.Now or DateTime.Today 

我通过调用新的前右手动我的计算机时钟设置为明天验证了这一点。

这是记录和预期,或有补丁或这是一个新发现的错误?

回答

0

DevForce在创建该属性对象时将每个不可为空的DataEntityProperty分配一个DefaultValue,并在初始化每个实体对象时使用此默认值。这意味着ServiceRequest.PropertyMetada.CreatedDate.DefaultValue在创建该属性时会设置一次,然后在构建ServiceRequest实例时用于填充CreatedDate的默认值。要解决此问题,您可以将CreatedDate设置为您的SerivceRequest构造函数或工厂创建这些对象所需的任何值。

+0

好吧,那就是我正在做的。 – GenuineRex 2014-10-10 03:25:17