RavenDB不跟踪实体更改

时间:2014-07-02 07:38:26

标签: c# .net ravendb

我有以下代码打开与RavenDB的会话,获取相关ID,使用这些想法加载实体,更改它们,最后保存它们。

List<EventDescriptor> events;

using (var session = raven.OpenSession())
{
    session.Store(aggregate);
    session.SaveChanges();

    events = (from descriptor in session.Query<EventDescriptor>() where descriptor.AggregateId == aggregate.Id select descriptor).ToList();
}

using (var session = raven.OpenSession())
{
    foreach (var @event in events)
    {
        var e = session.Load<EventDescriptor>("EventDescriptors/" + @event.Id.ToString());
        e.Saved = true;
    }

    session.SaveChanges();
}

问题是,实体中的更改似乎没有被跟踪,即使加载了对象,我也无法删除实体(给我未知的实体错误)。我已经尝试在循环中调用SaveChanges,但这也没有帮助。我查看了Raven的文档,但我不知道我在这里做错了什么。

2 个答案:

答案 0 :(得分:2)

是的,我们无法跟踪结构的更改,因为每次更改它们时,都会创建一个新副本

答案 1 :(得分:1)

问题是EventDescriptor是一个结构,而不是一个类。改变这解决了问题。我假设它是因为struct是一个valuetype而不是referencetype。