public void SetReferenceFieldOfExistingEntity() { 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); 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)); } }
public void SetReferenceFieldOfExistingEntityWithEquivalentKeyTest() { 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)); var referenceEntity = new MyRefEntity(); var field = myEntity.TypeInfo.Fields["Reference"]; entityId = myEntity.Id; entityRefId = referenceEntity.Id; accessor.SetReferenceKey(myEntity, field, referenceEntity.Key); t.Complete(); } using (var session = Domain.OpenSession()) using (var t = session.OpenTransaction()) { var myEntity = session.Query.All <MyEntity>().First(e => e.Id == entityId); var field = myEntity.TypeInfo.Fields["Reference"]; var accessor = session.Services.Get <DirectPersistentAccessor>(); var referenceKey = Key.Create(Domain, typeof(MyRefEntity), TypeReferenceAccuracy.ExactType, entityRefId); accessor.SetReferenceKey(myEntity, field, referenceKey); Assert.That(myEntity.PersistenceState, Is.EqualTo(PersistenceState.Synchronized)); referenceKey = Key.Create(Domain, typeof(MyRefEntity), TypeReferenceAccuracy.BaseType, entityRefId); accessor.SetReferenceKey(myEntity, field, referenceKey); Assert.That(myEntity.PersistenceState, Is.EqualTo(PersistenceState.Synchronized)); referenceKey = Key.Create(Domain, typeof(MyRefEntity), TypeReferenceAccuracy.Hierarchy, entityRefId); accessor.SetReferenceKey(myEntity, field, referenceKey); Assert.That(myEntity.PersistenceState, Is.EqualTo(PersistenceState.Synchronized)); 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)); } }