加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 在DateTime LastUpdated列上使用Html.hidden进行版本跟踪

发布时间:2020-12-12 08:58:29 所属栏目:MsSql教程 来源:网络整理
导读:问题简而言之: 如何在MVC.NET中做this? 长版问题: 我试图在SQL表中使用DateTime列进行版本跟踪(这本身就是一个解决方案,用于在通过表的editview传回后重新附加Linq2Sql数据类) 但现在我得到“没有找到或改变行” – 异常.在ctx.submit上: ctx.appointment
问题简而言之:

如何在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));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读