我有一个小巧的问题,我不知道如何解决这个问题:
我有一个这样的Poco:
public class Test
{
public long Id { get; set; }
public TimeSpan? Time { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
字段Time是MySQL'TIME'.例如,如果我用Dapper加载一个带有1000个刻度的时间字段的行,并且我保存此Poco而不做任何更改,再次重新加载同一行,时间字段现在为1001刻度.
我究竟做错了什么 ?
编辑:
我如何加载我的行:
var testobj = Db.Query<Test>("select * from Test where Id = @id", new {id = Id});
Run Code Online (Sandbox Code Playgroud)
我如何保存它:
Db.Execute("replace into Test values (@Id,@Time)", testObj);
Run Code Online (Sandbox Code Playgroud)
编辑2:
保存前的时间跨度对象:
{15:22:24}
Days: 0
Hours: 15
Milliseconds: 0
Minutes: 22
Seconds: 24
Ticks: 553440000000
TotalDays: 0.64055555555555554
TotalHours: 15.373333333333333
TotalMilliseconds: 55344000.0
TotalMinutes: 922.4
TotalSeconds: 55344.0
Run Code Online (Sandbox Code Playgroud)
保存后:
{15:22:25}
Days: 0
Hours: 15
Milliseconds: 0
Minutes: 22
Seconds: 25
Ticks: 553450000000
TotalDays: 0.64056712962962958
TotalHours: 15.37361111111111
TotalMilliseconds: 55345000.0
TotalMinutes: 922.41666666666674
TotalSeconds: 55345.0
Run Code Online (Sandbox Code Playgroud)
你可以看到Ticks 553440000000并成为553450000000
编辑3:
我在我的Test类中使用Hans提示,如下所示:
public class Test
{
public long Id { get; set; }
private TimeSpan? _time;
public TimeSpan? Time
{
get
{
if (_time.HasValue)
return TimeSpan.FromTicks((long)Math.Floor(_time.Value.Ticks / 100000000d) * 100000000);
return _time;
}
set { _time = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
它有效,但它仍然很奇怪
| 归档时间: |
|
| 查看次数: |
238 次 |
| 最近记录: |