1

私は次のようなエンティティを持っています:

public class EventItem 
{
    public int Id { get; set; }
    public int Vn { get; set; }
    public DateTimeOffset EventDate { get; set; }
    ...
}

..次に、EFfluentAPIを使用してdbを構築します。

    public class EventItemConfiguration : EntityTypeConfiguration<EventItem>
    {
        public CatalystItemConfiguration()
        {
            ToTable("events");
            HasKey(key => key.Id);

            Property(item => item.Id).HasColumnName("event_id").HasColumnType("int");
            Property(item => item.Vn).HasColumnName("event_vn").HasColumnType("int").IsRequired().IsConcurrencyToken();
Property(item => item.EventDate).HasColumnName("event_date").HasColumnType("datetimeoffset").IsRequired();
....
        }
}

これで、SQL2008と通信するときにこれがすべて機能します。テストにはSQLCE 4.0を使用し、SQL CEはdatetimeoffsetをサポートしていないため、上記のコードはヒープに分類されます。

これをSQL2008およびSQLCEで機能させるための私のオプションは何ですか?

4

1 に答える 1

2

UtcEventDate と TimeZone の 2 つの個別のフィールドに保存します。


public class EventItem 
{
    public int Id { get; set; }
    public int Vn { get; set; }
    public DateTime UtcEventDate { get; set; }
    public string TimeZone { get; set; }
    ...

    public DateTime GetLocalTime()
    {
        TimeZoneInfo tzInfo = TimeZoneInfo.FindSystemTimeZoneById(this.TimeZone);
        return TimeZoneInfo.ConvertTimeFromUtc(this.UtcEventDate, tzInfo);
    }
}

于 2011-04-20T07:35:55.187 に答える