微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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));

原文地址:https://www.jb51.cc/mssql/74691.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐