示例#1
0
        protected SisoDatabase(ISisoConnectionInfo connectionInfo, IDbProviderFactory dbProviderFactory)
        {
            Ensure.That(connectionInfo, "connectionInfo").IsNotNull();
            Ensure.That(dbProviderFactory, "dbProviderFactory").IsNotNull();

            _lockObject       = new object();
            _connectionInfo   = connectionInfo;
            _providerFactory  = dbProviderFactory;
            Settings          = ProviderFactory.GetSettings();
            ServerClient      = ProviderFactory.GetServerClient(ConnectionInfo);
            StructureSchemas  = new StructureSchemas(new StructureTypeFactory(), new AutoStructureSchemaBuilder());
            Serializer        = new DefaultSisoSerializer();
            StructureBuilders = new StructureBuilders(() => Serializer, schema => ProviderFactory.GetGuidStructureIdGenerator(), (schema, dbClient) => ProviderFactory.GetIdentityStructureIdGenerator(dbClient));
            Maintenance       = new SisoDatabaseMaintenance(this);
            _dbSchemas        = ProviderFactory.GetDbSchemaManagerFor(this);
        }
示例#2
0
        public void UseManualIds_Should_make_ResolveBuilderForInsert_to_return_builder_with_EmptyStructureIdGenerator()
        {
            var serializerFake    = new Mock <IStructureSerializer>();
            var structureBuilders = new StructureBuilders(
                () => serializerFake.Object,
                s => Mock.Of <IStructureIdGenerator>(),
                (s, d) => Mock.Of <IIdentityStructureIdGenerator>());
            var dbFake = new Mock <ISisoDatabase>();

            dbFake.SetupGet(f => f.StructureBuilders).Returns(structureBuilders);

            dbFake.Object.Configure().UseManualIds();
            var builder = structureBuilders.ResolveBuilderForInsert(Mock.Of <IStructureSchema>(), Mock.Of <IDbClient>());

            Assert.AreEqual(typeof(EmptyStructureIdGenerator), builder.StructureIdGenerator.GetType());
        }
示例#3
0
        public void UseGuidStructureIdGeneratorResolvedBy_Should_make_ResolveBuilderForInsert_to_return_builder_with_configured_id_generator()
        {
            var serializerFake    = new Mock <IStructureSerializer>();
            var structureBuilders = new StructureBuilders(
                () => serializerFake.Object,
                s => Mock.Of <IStructureIdGenerator>(),
                (s, d) => Mock.Of <IIdentityStructureIdGenerator>());
            var dbFake = new Mock <ISisoDatabase>();

            dbFake.SetupGet(f => f.StructureBuilders).Returns(structureBuilders);

            dbFake.Object.Configure().UseGuidStructureIdGeneratorResolvedBy(s => new EmptyStructureIdGenerator());
            var builder = structureBuilders.ResolveBuilderForInsert(StructureSchemaTestFactory.Stub <MyClassWithGuidId>(generateIdAccessor: true), Mock.Of <IDbClient>());

            Assert.AreEqual(typeof(EmptyStructureIdGenerator), builder.StructureIdGenerator.GetType());
        }
示例#4
0
        public void UseAutoIds_Should_make_ResolveBuilderForInsert_to_return_builder_for_autoIds_but_still_resolve_idgenerators()
        {
            var schemaFake = new Mock <IStructureSchema>();

            schemaFake.SetupGet(f => f.IdAccessor).Returns(() =>
            {
                var id = new Mock <IIdAccessor>();
                id.SetupGet(f => f.IdType).Returns(StructureIdTypes.Guid);
                return(id.Object);
            });
            var serializerFake    = new Mock <IStructureSerializer>();
            var structureBuilders = new StructureBuilders(
                () => serializerFake.Object,
                s => Mock.Of <IStructureIdGenerator>(),
                (s, d) => Mock.Of <IIdentityStructureIdGenerator>());
            var dbFake = new Mock <ISisoDatabase>();

            dbFake.SetupGet(f => f.StructureBuilders).Returns(structureBuilders);

            dbFake.Object.Configure().UseAutoIds();
            var builder = structureBuilders.ResolveBuilderForInsert(schemaFake.Object, Mock.Of <IDbClient>());

            Assert.AreEqual(typeof(StructureBuilderAutoId), builder.GetType());
        }