问题简而言之:
如何在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精确解析的.我想这也增加了问题.
解决方法
@H_301_30@ 我认为问题在于将最后一次更新时间写入隐藏字段,就像那样只会在日期执行ToString,默认情况下不会渲染出毫秒数.您可以尝试将时间戳渲染为某些绝对值,例如ticks:<%= Html.Hidden("LastUpdate",Model.LastUpdate.Ticks) %>
然后,您可以通过将值转换回长整数来重建另一侧的日期时间.重建DateTime:
var dt = new DateTime(Int64.Parse(ticks));