예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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();
                }
            });
        }