SenseNet 中的节点在 Content Repository 中的生命周期是有限的,即使您在源代码中操作的 Node 对象可以随心所欲地挂起。您无法创建全局 Node 变量、加载它并对其执行存储库操作,而不用担心时间。
通常,当一个新节点通过加载或创建而存在时,最好按顺序对字段进行所有更新并尽快保存更新的节点。
要解决“节点已过期”异常,只需在导致异常的操作之前立即重新加载节点即可。Node.Id
保存整数变量以方便加载可能会有所帮助。
var parent = Node.LoadNode(Order.StoragePath);
Order order = new Order(parent);
// Assign a bunch of fields then save the order.
order.Save();
// Do more operations -- calculate invoices, send emails, etc.
// order Node is now out of date. You must reload it to
// perform Repository operations.
var orderNotOutOfDate = Node.LoadNode(order.Id) as Order;
var archiveFolder = GetArchiveFolder();
order.MoveTo(archiveFolder); // MoveTo fails if Node is out of date.