コード例 #1
0
ファイル: QueryProvider.cs プロジェクト: Michalau/Kros.KORM
        /// <inheritdoc/>
        public IIdGenerator CreateIdGenerator(Type dataType, string tableName, int batchSize)
        {
            var connection = GetConnectionForIdGenerator();
            var factory    = IdGeneratorFactories.GetFactory(dataType, connection);

            return(new IdGeneratorHelper(factory.GetGenerator(tableName, batchSize), connection));
        }
コード例 #2
0
        public void ThrowExceptionWhenAdoClientNameIsNotRegistered()
        {
            Action action = () => { var factory = IdGeneratorFactories.GetFactory("constring", "System.Data.CustomClient"); };

            action.Should().Throw <InvalidOperationException>()
            .WithMessage("*System.Data.CustomClient*");
        }
コード例 #3
0
        public void GetFactoryByConnection()
        {
            using (var conn = new SqlConnection())
            {
                var factory = IdGeneratorFactories.GetFactory(conn);

                factory.Should().NotBeNull();
            }
        }
コード例 #4
0
        public void ThrowExceptionWhenDataTypeIsNotRegistered()
        {
            using (var conn = new CustomConnection())
            {
                Action action = () => { var factory = IdGeneratorFactories.GetFactory(typeof(DateTime), conn); };

                action.Should().Throw <InvalidOperationException>();
            }
        }
コード例 #5
0
 /// <summary>
 /// Initializes database for using Id generator.
 /// </summary>
 /// <returns>This instance.</returns>
 public KormBuilder InitDatabaseForIdGenerators()
 {
     using IIdGeneratorsForDatabaseInit idGenerators = IdGeneratorFactories.GetGeneratorsForDatabaseInit(
               ConnectionSettings.ConnectionString, ConnectionSettings.KormProvider);
     foreach (IIdGenerator idGenerator in idGenerators)
     {
         idGenerator.InitDatabaseForIdGenerator();
     }
     return(this);
 }
コード例 #6
0
        public void GeneratorExample()
        {
            using (var conn = new SqlConnection())
            {
                var idGeneratorFactory = IdGeneratorFactories.GetFactory(conn);

                var peopleService = new PeopleService(idGeneratorFactory);
                peopleService.GenerateData();
            }
        }
コード例 #7
0
        private TestDatabase CreateTestDatabase()
        {
            TestDatabase db = CreateDatabase(new[] { CreateTable_A, CreateTable_B });

            foreach (IIdGenerator idGenerator in IdGeneratorFactories.GetGeneratorsForDatabaseInit(db.Connection))
            {
                idGenerator.InitDatabaseForIdGenerator();
            }
            return(db);
        }
コード例 #8
0
        public void ThrowExceptionWhenConnectionIsNotRegisterd()
        {
            using (var conn = new CustomConnection())
            {
                Action action = () => { var factory = IdGeneratorFactories.GetFactory(conn); };

                action.Should().Throw <InvalidOperationException>()
                .WithMessage("*CustomConnection*");
            }
        }
コード例 #9
0
        /// <summary>
        /// Initializes database for using Id generator.
        /// </summary>
        /// <returns>This instance.</returns>
        public KormBuilder InitDatabaseForIdGenerator()
        {
            IIdGeneratorFactory factory = IdGeneratorFactories.GetFactory(
                ConnectionSettings.ConnectionString, ConnectionSettings.KormProvider);

            using (IIdGenerator idGenerator = factory.GetGenerator(string.Empty))
            {
                idGenerator.InitDatabaseForIdGenerator();
            }
            return(this);
        }
コード例 #10
0
        private TestDatabase CreateTestDatabase()
        {
            TestDatabase db = CreateDatabase(new[] { CreateTable_TestTable });

            using IIdGeneratorsForDatabaseInit idGenerators = IdGeneratorFactories.GetGeneratorsForDatabaseInit(db.Connection);
            foreach (IIdGenerator idGenerator in idGenerators)
            {
                idGenerator.InitDatabaseForIdGenerator();
            }
            return(db);
        }
コード例 #11
0
        /// <summary>
        /// Initializes database for using Id generator.
        /// </summary>
        /// <returns>This instance.</returns>
        public KormBuilder InitDatabaseForIdGenerator()
        {
            var factory = IdGeneratorFactories.GetFactory(_connectionString.ConnectionString, _connectionString.ProviderName);

            using (var idGenerator = factory.GetGenerator(string.Empty))
            {
                idGenerator.InitDatabaseForIdGenerator();
            }

            return(this);
        }
コード例 #12
0
        /// <inheritdoc/>
        public IIdGenerator CreateIdGenerator(string tableName, int batchSize)
        {
            var connection = (Connection as ICloneable).Clone() as DbConnection;

            try
            {
                connection.Open();
            }
            catch (SqlException ex)
            {
                throw new InvalidOperationException(Resources.CannotOpenConnectionWhenGeneratingPrimaryKeys, ex);
            }

            var factory = IdGeneratorFactories.GetFactory(connection);

            return(new IdGeneratorHelper(factory.GetGenerator(tableName, batchSize), connection));
        }
コード例 #13
0
ファイル: QueryProvider.cs プロジェクト: sincoda/Kros.Libs
        /// <inheritdoc/>
        public IIdGenerator CreateIdGenerator(string tableName, int batchSize)
        {
            var connection = (Connection as ICloneable).Clone() as DbConnection;

            try
            {
                connection.Open();
            }
            catch (SqlException ex)
            {
                throw new InvalidOperationException(@"There was a failure to open the database connection at the time " +
                                                    "the primary keys are generated. Try add 'Persist Security Info = TRUE' to connection string.", ex);
            }

            var factory = IdGeneratorFactories.GetFactory(connection);

            return(new IdGeneratorHelper(factory.GetGenerator(tableName, batchSize), connection));
        }
コード例 #14
0
        private TestDatabase CreateTestDatabase()
        {
            string[] scripts =
            {
                string.Format(Script_TableWithAutoIncrementId, Table_AutoIncrementId),
                string.Format(Script_InsertTrigger,            Table_AutoIncrementId),
                string.Format(Script_UpdateTrigger,            Table_AutoIncrementId),
                string.Format(Script_TableWithManualId,        Table_ManualId),
                string.Format(Script_InsertTrigger,            Table_ManualId),
                string.Format(Script_UpdateTrigger,            Table_ManualId),
            };

            TestDatabase db = CreateDatabase(scripts);

            foreach (IIdGenerator idGenerator in IdGeneratorFactories.GetGeneratorsForDatabaseInit(db.Connection))
            {
                idGenerator.InitDatabaseForIdGenerator();
            }
            return(db);
        }
コード例 #15
0
 /// <summary>
 /// Registers factory methods for creating an instance of factory into <see cref="IdGeneratorFactories"/>.
 /// </summary>
 public static void Register() =>
 IdGeneratorFactories.Register <OleDbConnection>(MsAccessDataHelper.ClientId,
                                                 (conn) => new MsAccessIdGeneratorFactory(conn as OleDbConnection),
                                                 (connString) => new MsAccessIdGeneratorFactory(connString));
コード例 #16
0
 /// <summary>
 /// Registers factory methods for creating an instance of factory into <see cref="IdGeneratorFactories"/>.
 /// </summary>
 public static void Register() =>
 IdGeneratorFactories.Register <OleDbConnection>("System.Data.OleDb",
                                                 (conn) => new MsAccessIdGeneratorFactory(conn as OleDbConnection),
                                                 (connString) => new MsAccessIdGeneratorFactory(connString));
コード例 #17
0
 /// <summary>
 /// Registers factory methods for creating an instance of factory into <see cref="IdGeneratorFactories"/>.
 /// </summary>
 public static void Register() =>
 IdGeneratorFactories.Register <SqlConnection>(SqlServerDataHelper.ClientId,
                                               (conn) => new SqlServerIdGeneratorFactory(conn as SqlConnection),
                                               (connString) => new SqlServerIdGeneratorFactory(connString));
コード例 #18
0
        public void GetFactoryByAdoClientName()
        {
            var factory = IdGeneratorFactories.GetFactory("connectionstring", SqlServerDataHelper.ClientId);

            factory.Should().NotBeNull();
        }
コード例 #19
0
 /// <summary>
 /// Registrovanie factory metód na vytvorenie inštancie do <see cref="IdGeneratorFactories"/>.
 /// </summary>
 public static void Register() =>
 IdGeneratorFactories.Register <SqlConnection>("System.Data.SqlClient",
                                               (conn) => new SqlServerIdGeneratorFactory(conn as SqlConnection),
                                               (connString) => new SqlServerIdGeneratorFactory(connString));
コード例 #20
0
        public void GetFactoryByAdoClientName()
        {
            var factory = IdGeneratorFactories.GetFactory("connectionstring", "System.Data.SqlClient");

            factory.Should().NotBeNull();
        }
コード例 #21
0
ファイル: QueryProvider.cs プロジェクト: Michalau/Kros.KORM
 /// <inheritdoc/>
 public IIdGeneratorsForDatabaseInit GetIdGeneratorsForDatabaseInit()
 => IdGeneratorFactories.GetGeneratorsForDatabaseInit(GetConnectionForIdGenerator());