我有以下对象: WordOccurrence,它有两个属性: - 字符串。 - int出现。 我想做以下,没有得到一个例外( - : WordOccurrence w1 = new WordOccurrence(){Word =“Hey”,Occurrence = 1}; WordOccurrence w2 = new WordOccurrence(){Word =“Hey”,Occurrence = 1};
现在我想存储第一个,w1,但用w2删除他。
session.store(W1); 使用Session.delete(W2); - >得到了例外......
有可能??
答案 0 :(得分:1)
请尝试格式化问题中的代码,并重新说明您要执行的操作。目前尚不清楚您是否期望保存w2
应该引用与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
(如果它是会话中的唯一操作),或者使用{{1从会话中退出该对象。
如果您希望Word属性是文档的ID,则可以通过customizing the DocumentStore conventions
来实现