请尝试格式化您问题中的代码,并重新表述您要执行的操作。目前尚不清楚您是否期望 savew2
应该引用与 相同的对象w1
,但它们不是——即使 ID 相同,Raven 也不会处理删除。您需要在调用 SaveChanges 后立即删除刚刚存储的对象(我不明白您为什么要这样做),或者在更可能的情况下Load
稍后再调用Delete
:
var w1Id = string.empty;
using(session)
{
var w1 = new WordOccurrence { Word="Hey", Occurrence=1};
session.store(w1);
session.SaveChanges();
w1Id = w1.Id;
//if you aren't declaring the Id property for some reason...
w1Id = session.Advanced.GetDocumentId(w1);
}
//somewhere else in the code
using(session)
{
var w1 = session.Load<WordOccurrence>(w1Id);
session.Delete(w1);
session.SaveChanges();
}
底线是你不能删除你刚刚告诉会话的东西Store
,在你打电话之前SaveChanges
。如果您尝试撤消Store
操作,可能是因为用户点击了撤消按钮,请不要调用SaveChanges
(如果它是会话中的唯一操作),或者用于Session.Advanced.Evict(w1)
从会话中退出该对象。
如果您希望 Word 属性成为文档的 Id,您可以通过自定义 DocumentStore 约定来实现