我有一个像:
这样的实体public class EventItem
{
public int Id { get; set; }
public int Vn { get; set; }
public DateTimeOffset EventDate { get; set; }
...
}
..然后使用EF fluent API构建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();
....
}
}
现在这一切都在与SQL 2008交谈时。对于测试,我使用SQL CE 4.0,因为Sql CE不支持datetimeoffset,所以上面的代码都在堆中。
我有什么选择让它适用于Sql 2008和Sql CE?
答案 0 :(得分:2)
将其保存在2个单独的字段中:UtcEventDate和TimeZone:
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);
}
}