sql – 在DateTime LastUpdated列上使用Html.hidden进行版本跟踪时,MVC.NET毫秒丢失

前端之家收集整理的这篇文章主要介绍了sql – 在DateTime LastUpdated列上使用Html.hidden进行版本跟踪时,MVC.NET毫秒丢失前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
问题简而言之:

如何在MVC.NET中做this

长版问题:

我试图在sql表中使用DateTime列进行版本跟踪(这本身就是一个解决方案,用于在通过表的editview传回后重新附加Linq2sql数据类)

但现在我得到“没有找到或改变行” – 异常.在ctx.submit上:

ctx.appointments.Attach(appointment,true);
 ctx.SubmitChanges();

其中ctx是我的Linq datacontext,约会我的表,并预约我试图附加的约会对象..我已将约会表设置为sugested here

建议的解决方案的读者也注意到了这个问题.他建议this作为解决方案.

这里的问题是我不使用webforms,我使用MVC.NET.所以我猜测正在使用

<%= Html.Hidden("LastUpdate",Model.LastUpdate) %>

使LastUpdate属性更改.
那么有什么方法可以确保在传回我的更新操作时获得相同(或至少相等)的DateTime对象?

我在更新约会表时使用建议的gettime()触发器.这显然存储了一个sql datetime对象.这可能不是由Linq2sql精确解析的.我想这也增加了问题.

我希望有一个解决方案.我知道只使用时间戳格式也可以解决它..但这超出了这个问题的范围

解决方法

我认为问题在于将最后一次更新时间写入隐藏字段,就像那​​样只会在日期执行ToString,默认情况下不会渲染出毫秒数.您可以尝试将时间戳渲染为某些绝对值,例如ticks:
<%= Html.Hidden("LastUpdate",Model.LastUpdate.Ticks) %>

然后,您可以通过将值转换回长整数来重建另一侧的日期时间.重建DateTime:

var dt = new DateTime(Int64.Parse(ticks));

猜你在找的MsSQL相关文章