1

我有一个数据库,其中日期保存为 CHAR(8),时间保存为 CHAR(6)。例如,数据库中的日期如下所示:20100326 表示 2010/03/26,时间看起来像:080000 表示 8 点钟。

当然,日期和时间不能以这种方式显示在客户端上,应分别转换为如下所示:26/04/2010 和这个 8:00。

我还希望在将日期和时间发送到服务器时将它们转换回数据库格式。我正在寻找一种让服务器执行此操作的方法,例如在元数据类上使用数据注释。但我无法找到方法,如果有人可以帮助我或指出我正确的方向,我将不胜感激。

我正在使用 Entity Framework 5 并正在使用 web api 构建 web 服务。

肿瘤坏死因子。

顺便说一句:以下是包含元数据的部分类的设置器/获取器。

        [Display(ResourceType = typeof(Properties.OrderEntryIn_Resources), Name = "DeliveryTimeFrom")]
    public string ZNGU_T { get; set; } // Time

 [Display(ResourceType = typeof(Properties.OrderEntryIn_Resources), Name = "DeliveryDateFrom")]        
    public string ZNGU_D { get; set; } // Date
4

2 回答 2

3

在数据库中,您应该使用它们提供的DATE/TIME类型。

但是,您需要的是(对于日期):

//DB -> UI
DateTime.ParseExact(input, "yyyyMMdd", CultureInfo.InvariantCulture)
    .ToString("yyyy/MM/dd");
//UI -> DB
DateTime.ParseExact(input, "yyyy/MM/dd", CultureInfo.InvariantCulture)
    .ToString("yyyyMMdd");

当时:

//DB -> UI
DateTime.ParseExact(input, "HHmmss", CultureInfo.InvariantCulture)
    .ToString("H:mm");
//UI -> DB
DateTime.ParseExact(input, "H:mm", CultureInfo.InvariantCulture)
    .ToString("HHmmss");
于 2013-07-23T13:08:32.690 回答
1

我们目前针对这个确切问题所做的工作是创建一个部分类,然后添加两个绑定到底层数据的属性,但它会根据需要转换数据。只要 UI 可以访问这两个部分类,您就可以非常无缝地隐藏 DB 具有疯狂的列类型的事实。

我建立在 newStackExchangenInstance 的答案之上

所以,例如。

public partial class JeroensCustomClass
{
    public string ZNGU_T { get; set; } // Time

    public string ZNGU_D { get; set; } // Date

    public DateTime DeliveryDateTimeFrom
    {
        get
        {
            var date = DateTime.ParseExact(ZNGU_D, "yyyyMMdd", CultureInfo.InvariantCulture);
            var time = DateTime.ParseExact(ZNGU_D, "yyyyMMdd", CultureInfo.InvariantCulture);
            return new DateTime(date.Year, date.Month, date.Day, time.Hour, time.Minute, time.Second);
        }
        set
        {
            ZNGU_D = value.ToString("yyyyMMdd");
            ZNGU_T = value.ToString("HHmmss");
        }
    }

}

根据您的需要,您显然可以在前端格式化日期/时间。

于 2013-07-23T13:44:39.140 回答