0

最近、ビルド 2230 にアップグレードしましたが、問題なく動作しています。ただし、RavenDB .NET クライアント アセンブリを更新したところ、この問題が発生しています。

このコードは 1 年ほど使用されています。これは私が保存している方法です:

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

とった。試行錯誤の結果、1 つの派生プロパティが (私の質問に示されているものとは異なるクラスで) 保存されていることに気付きました。そのプロパティは[DataMember]属性で装飾されていました。アプリ用の WCF サービスを作成しているため、最近追加したばかりで、テストのために 1 つのプロパティでその属性を使用することから始めました。

Ayende がここで述べているように、すべてのプロパティで使用する[DataMember]か、いずれのプロパティにも使用しないでください。プロパティに存在する場合[DataMember]、他のすべては無視されます。

注:別のクラスのプロパティで[DataMember]指定されていたにもかかわらず、これは私にとって問題でした。どこかで使うなら全部使わなきゃいけないようです。[DataMember]

于 2013-04-23T17:24:42.987 に答える