-
Notifications
You must be signed in to change notification settings - Fork 27
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
This happens only with saved entities (ones with PersistanceState equals PersistanceState.Synchronized). New entities are already registered for following persist so any change of them will be saved anyway.
Test to reproduce the problem
[Test]
public void SetReferenceFieldOfExistingEntityTest()
{
var entityId = 0;
var entityRefId = 0;
using (var session = Domain.OpenSession())
using (var t = session.OpenTransaction()) {
var accessor = session.Services.Get<DirectPersistentAccessor>();
var myEntity = (MyEntity) accessor.CreateEntity(typeof (MyEntity));
entityId = myEntity.Id;
entityRefId = new MyRefEntity().Id;
t.Complete();
}
using (var session = Domain.OpenSession())
using (var t = session.OpenTransaction()) {
var myEntity = session.Query.All<MyEntity>().First(e => e.Id==entityId);
var referenceEntity = session.Query.All<MyRefEntity>().First(e => e.Id==entityRefId);
var field = myEntity.TypeInfo.Fields["Reference"];
var accessor = session.Services.Get<DirectPersistentAccessor>();
accessor.SetReferenceKey(myEntity, field, referenceEntity.Key);
Assert.That(myEntity.PersistenceState, Is.EqualTo(PersistenceState.Modified));
t.Complete();
}
using (var session = Domain.OpenSession())
using (var t = session.OpenTransaction()) {
var myEntity = session.Query.All<MyEntity>().First(e => e.Id==entityId);
Assert.That(myEntity.Reference, Is.Not.Null);
Assert.That(myEntity.Reference.Id, Is.EqualTo(entityRefId));
}
}
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working