1

日付が CHAR(8) として保存され、時刻が CHAR(6) として保存されるデータベースがあります。たとえば、DB の日付は次のようになります。2010/03/26 の場合は 20100326、8 時の場合は 080000 のようになります。

もちろん、クライアントでは日付と時刻をこのように表示することはできず、それぞれ次のように変換する必要があります: 26/04/2010 とこの 8:00。

また、サーバーに送信されるときに、日付と時刻の両方をデータベース形式に変換したいと考えています。サーバーにこれを実行させる方法を探しています。たとえば、Metadata クラスでデータ注釈を使用します。しかし、私はその方法を見つけることができず、誰かが私を助けてくれたり、正しい方向に向けてくれたりしてくれたらありがたいです.

Entity Framework 5 を使用しており、Web API を使用して Web サービスを構築しています。

Tnx。

ところで:以下は、メタデータを含む部分クラスからのセッター/ゲッターです。

        [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

この正確な問題に対して現在行っていることは、部分クラスを作成し、基になるデータにバインドされた 2 つのプロパティを追加することですが、必要に応じてデータを変換します。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 に答える