Zac*_*tes 5 sql-server utc ormlite-servicestack
有没有指定我想办法所有的的DateTime
是OrmLite物化设置为UTC样S'
DateTime
当插入一行时,我通过存储过程在我的数据库中存储了很多s:
insert [Comment] (
Body
, CreatedOn
) values (
@Body
, getutcdate()
);
Run Code Online (Sandbox Code Playgroud)
当我通过ormlite中的select语句检索值时,日期时间以Unspecified
实物形式出现(我相信它被解释为本地时区):
var comments = db.SqlList<Comment>("select * from [Comment] where ... ");
Run Code Online (Sandbox Code Playgroud)
我宁愿不单独设置每个DateTime对象:
foreach (var comment in comments) {
comment.CreatedOn = DateTime.SpecifyKind(comment.CreatedOn, DateTimeKind.Utc);
}
Run Code Online (Sandbox Code Playgroud)
我发现了这个问题,但我认为这不是我要求的:
servicestack ormlite sqlite DateTime在插入时调整TimeZone
也找到了这个拉取请求,但设置SqlServerOrmLiteDialectProvider.EnsureUtc(true)
似乎也没有.
SqlServerOrmLiteDialectProvider.EnsureUtc(true)
确实有效,但我的测试用例中还发生了其他事情,让我相信它没有。希望这对其他人有帮助。
这是一些示例代码:
模型.cs
public class DateTimeTest {
[AutoIncrement]
public int Id { get; set; }
public DateTime CreatedOn { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
测试.cs
var connectionString = "server=dblcl;database=flak;trusted_connection=true;";
var provider = new SqlServerOrmLiteDialectProvider();
provider.EnsureUtc(true);
var factory = new OrmLiteConnectionFactory(connectionString, provider);
var connection = factory.Open();
connection.CreateTable(true, typeof(DateTimeTest));
connection.ExecuteSql("insert DateTimeTest (CreatedOn) values (getutcdate())");
var results = connection.SqlList<DateTimeTest>("select * from DateTimeTest");
foreach(var result in results) {
Console.WriteLine("{0},{1},{2},{3},{4}", result.Id, result.CreatedOn, result.CreatedOn.Kind, result.CreatedOn.ToLocalTime(), result.CreatedOn.ToUniversalTime());
}
Run Code Online (Sandbox Code Playgroud)
输出
1,9/13/2013 5:19:12 PM,Utc,9/13/2013 10:19:12 AM,9/13/2013 5:19:12 PM
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1180 次 |
最近记录: |