DevForce 2012中DateTime的默认值

本文关键字:默认值 DateTime 2012 DevForce | 更新日期: 2023-09-27 18:26:02

我有一个实体,其System.DateTime-CreatedDate成员的默认值为Today(没有时间组件)。此外,还会缓存Today的Date值,它是应用程序启动的日期。如果重新启动进程,通常不会有问题,但在长期运行的Windows服务中使用时,此日期值会过时。

示例:

从我的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

我通过手动将我的电脑时钟设置为明天,就在呼叫新电话之前,验证了这一点。

这是有记录的和预期的吗,还是有补丁,或者这是一个新发现的bug?

DevForce 2012中DateTime的默认值

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