オブジェクトを RavenDb
に格納すると、次のエラーが発生します。格納されたオブジェクトに 1 つのキーのみを割り当てています。オーバーロードされたストア メソッドを使用してエンティティを格納しています。
Store は一度だけ呼び出されるので、なぜこのような例外がスローされるのでしょうか。私が理解していないオブジェクトアイデンティティについて何かがあります。
このId
プロパティには、ravendb の永続性以外に別の目的があります。
Entity UserQuery+MyItem had document key 'mykeypath/44' but now has document key property 'MyItems/44'. You cannot change the document key property of a entity loaded into the session
.
完全なソースコードを含めるように編集
void Main()
{
var host = "http://myhost:8020";
var _documentStore = new DocumentStore { Url = host, DefaultDatabase = "sdb" };
_documentStore.Initialize();
using (var session = _documentStore.OpenSession())
{
var path = "mykeypath/44";
session.Store(new MyItem { Id = 303, Test = "TEST" }, path);
session.SaveChanges();
}
}
public class MyItem : AuditableEntity {
public string Test { get; set; }
}
[Serializable]
public abstract class AuditableEntity : IAuditable
{
[DataMember]
[Display(Name = "Id", Description = "Id")]
public long Id { get; set; }
[DataMember]
[Display(Name = "Modified By", Description = "Modified By")]
public string ModifiedBy { get; set; }
[DataMember]
[Display(Name = "Modified Date", Description = "Modified Date")]
public DateTime ModifiedDate { get; set; }
}