0

我最近升级到 build 2230,一切正常。但是,我刚刚更新了 RavenDB .NET 客户端程序集,现在我遇到了这个问题。

该代码已经存在一年左右。这就是我保存的方式:

public void Save(EntityBase objectToSave)
{
    using (IDocumentSession session = GetOptimisticSession())
    {
        session.Store(objectToSave, objectToSave.Etag);
        session.SaveChanges();
    }
}

这就是我要保存的对象。

public class InstallationEnvironment : EntityBase
{
    public string Name { get; set; }
    public int LogicalOrder { get; set; }
}

现在是基类:

public class EntityBase : NotifyPropertyChangedBase
{
    public string Id { get; set; }  // Required field for all objects with RavenDB.
}

问题是基类属性 (Id) 在 RavenDB 中被持久化,但派生属性 (Name, LogicalOrder) 不是。

为什么只有基类属性会保存在 RavenDB 中?

4

1 回答 1

2

知道了。通过反复试验,我注意到一个派生属性被保存(在与我的问题中显示的不同的类上),并且该属性被属性修饰[DataMember]。我刚刚添加了它,因为我正在为我的应用程序创建 WCF 服务,并且我首先在一个属性上使用该属性进行测试。

正如 Ayende在这里所说,您必须[DataMember]在所有属性上使用,或者不使用任何属性。如果[DataMember]存在于属性上,则所有其他属性都将被忽略。

注意:这对我来说是个问题,即使是在不同类[DataMember]的属性上指定的。似乎如果我在任何地方使用它,我必须将它用于一切。[DataMember]

于 2013-04-23T17:24:42.987 回答