public async Task DisposedTest() { var store = await StoreBuilder.New().CreateAsync(); await store.Schemas.New <TestDomainDefinition>().CreateAsync(); var domain = await store.DomainModels.New().UsingIdGenerator(r => new Hyperstore.Modeling.Domain.LongIdGenerator()).CreateAsync("Test"); XReferencesY rel = null; using (var session = store.BeginSession()) { var lockX = session.AcquireLock(LockType.Shared, "X"); // Upgrade lock type to Exclusive lockX = session.AcquireLock(LockType.Exclusive, "X"); var lockY = session.AcquireLock(LockType.Exclusive, "Y"); lockX.Dispose(); // Release lockX } // Release lockY using (var s = store.BeginSession()) { var start = new XExtendsBaseClass(domain); var start2 = new XExtendsBaseClass(domain); start.OthersX.Add(start2); var end = new YClass(domain); rel = new XReferencesY(start, end); s.AcceptChanges(); } Assert.NotNull(rel); }
public async Task ReferenceInRelationshipTest() { var store = await StoreBuilder.New().CreateAsync(); var schema = await store.Schemas.New <TestDomainDefinition>().CreateAsync(); var dm = await store.DomainModels.New().CreateAsync("Test"); XReferencesY rel = null; using (var s = store.BeginSession()) { var start = new XExtendsBaseClass(dm); var end = new YClass(dm); rel = new XReferencesY(start, end); rel.YRelation = end; s.AcceptChanges(); } Assert.NotNull(rel); Assert.NotNull(rel.YRelation); }
public async Task RelationshipConstraintTest() { var store = await StoreBuilder.New().CreateAsync(); var schema = await store.Schemas.New <TestDomainDefinition>().CreateAsync(); var domain = await store.DomainModels.New().CreateAsync("Test"); schema.Definition.XReferencesY.AddImplicitConstraint(r => r.Weight > 0, "error").Register(); Assert.Throws <SessionException>( () => { XReferencesY rel = null; using (var s = store.BeginSession()) { var start = new XExtendsBaseClass(domain); var end = new YClass(domain); rel = new XReferencesY(start, end); rel.YRelation = end; s.AcceptChanges(); } }); }