我最近升级到了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中保存基类属性?
答案 0 :(得分:2)
知道了。通过反复试验,我注意到一个派生属性被保存(与我的问题中显示的类别不同),并且该属性使用[DataMember]
属性进行了修饰。我刚刚添加它,因为我正在为我的应用程序创建一个WCF服务,我开始在一个属性上使用该属性进行测试。
正如Ayende所说here,你必须对所有属性使用[DataMember]
,或者对所有属性都不使用[DataMember]
。如果属性中存在[DataMember]
,则将忽略所有其他属性。
注意:即使在其他类中的属性上指定了[DataMember]
,这对我来说也是一个问题。好像我在任何地方都使用{{1}},我必须将它用于所有事情。