【问题标题】:Default value for DateTime in DevForce 2012DevForce 2012 中 DateTime 的默认值
【发布时间】:2014-10-09 16:35:41
【问题描述】:

我有一个具有 System.DateTime CreatedDate 成员的实体,该成员的默认值是 Today(无时间组件)。此外,今天的日期值被缓存并且是应用程序启动的日期。如果您重新启动进程,通常不会有问题,但是当在长时间运行的 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

我通过在调用 new 之前手动将我的计算机时钟设置为明天来验证这一点。

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

【问题讨论】:

    标签: c# datetime default devforce


    【解决方案1】:

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

    【讨论】:

    • 好的,这就是我正在做的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 2018-12-31
    相关资源
    最近更新 更多