【发布时间】:2017-09-19 21:36:20
【问题描述】:
我在使用 Azure SQL 服务器时遇到问题,在我的本地计算机上,我可以将 datetimeoffset 保存到数据库中,并且时区偏移量已正确保存,例如 下面
2017-03-31 00:00:00.0000000 -05:00
但是在 azure 上丢失了时区偏移量,我的列是 datetimeoffset 类型,我正在使用 DateTimeOffset.UtcNow.UtcDateTime 或 DateTimeOffset.Now 获取我的 datetimeoffset 但似乎两种方法都不起作用,总是像下面这样保存
2017-03-31 00:00:00.0000000 +00:00
如何在 Azure SQL 服务器上保存正确的 DateTimeOffset。
编辑:我正在使用实体框架代码优先迁移,我只是创建实体并使用上面的任何一行分配 DateTimeOffset,然后使用 context.SaveChanges()。
var entity = Mapper.Map<CarSearchForm, CarSearches>(model);
ctx.CarSearches.Add(entity);
ctx.SaveChanges();
然后automapper配置文件是这样的
CreateMap<CarSearchForm, CarSearches>()
.ForMember(dest => dest.RequestedDate, opts => opts.MapFrom(src => DateTimeOffset.UtcNow.UtcDateTime))
.ForMember(dest => dest.PickupTime, opts => opts.MapFrom(src => src.TimePickup))
.ForMember(dest => dest.DropoffTime, opts => opts.MapFrom(src => src.TimePickup));
这是模型
namespace Data.Entities
{
public class CarSearches
{
public int CarSearchesId { get; set; }
[Required]
public string PickupPlace { get; set; }
[Required]
public DateTimeOffset PickupDate { get; set; }
[Required]
public DateTimeOffset PickupTime { get; set; }
[Required]
public DateTimeOffset DropoffDate { get; set; }
[Required]
public DateTimeOffset DropoffTime { get; set; }
[Required]
public CarTransmission Transmission { get; set; }
[Required]
public DateTimeOffset RequestedDate { get; set; }
}
}
我只对上面的 RequestedDate 属性感兴趣,我不知道为什么不在 Azure 上保存时区偏移量而是在本地工作。
谢谢
【问题讨论】:
-
如何使用保存到数据库?英孚? ado.net?由于某种原因,您的日期时间中缺少时间部分
-
显示代码如何保存
-
我进行了编辑,我使用的是 EF 代码优先迁移,没什么特别的,只是创建实体并分配值和 ctx.SaveChanges()
-
您正在将其投射到某处的
date。 -
向我们展示您的代码优先模型。
标签: c# sql-server azure datetimeoffset