Exemple #1
0
        public SQLiteTransactionalDataSource(SQLiteDataSource dataSource, IsolationLevel?isolationLevel, bool forwardEvents) : base(new SQLiteDataSourceSettings(dataSource, forwardEvents))
        {
            if (dataSource == null)
            {
                throw new ArgumentNullException(nameof(dataSource), $"{nameof(dataSource)} is null.");
            }

            Name = dataSource.Name;

            m_BaseDataSource = dataSource;
            m_Connection     = dataSource.CreateConnection();
            m_LockToken      = SyncLock.WriterLock();

            if (isolationLevel == null)
            {
                m_Transaction = m_Connection.BeginTransaction();
            }
            else
            {
                m_Transaction = m_Connection.BeginTransaction(isolationLevel.Value);
            }

            if (forwardEvents)
            {
                ExecutionStarted  += (sender, e) => dataSource.OnExecutionStarted(e);
                ExecutionFinished += (sender, e) => dataSource.OnExecutionFinished(e);
                ExecutionError    += (sender, e) => dataSource.OnExecutionError(e);
                ExecutionCanceled += (sender, e) => dataSource.OnExecutionCanceled(e);
            }

            AuditRules = dataSource.AuditRules;
            UserValue  = dataSource.UserValue;
        }
Exemple #2
0
 static TestBase()
 {
     s_DataSource       = new SQLiteDataSource("Data Source=SQLiteTestDatabase.sqlite;");
     s_StrictDataSource = s_DataSource.WithSettings(new SQLiteDataSourceSettings()
     {
         StrictMode = true
     });
 }
Exemple #3
0
 static TestBase()
 {
     s_DataSource       = new SQLiteDataSource(System.Configuration.ConfigurationManager.ConnectionStrings["SQLiteTestDatabase"].ConnectionString);
     s_StrictDataSource = s_DataSource.WithSettings(new SQLiteDataSourceSettings()
     {
         StrictMode = true
     });
 }
Exemple #4
0
        public SQLiteDataSource AttachSoftDeleteRulesWithUser(SQLiteDataSource source)
        {
            var currentUser1 = source.From(EmployeeTableName).WithLimits(1).ToObject <Employee>().Execute();

            return(source.WithRules(
                       new SoftDeleteRule("DeletedFlag", true, OperationTypes.SelectOrDelete),
                       new UserDataRule("DeletedByKey", "EmployeeKey", OperationTypes.Delete),
                       new DateTimeRule("DeletedDate", DateTimeKind.Local, OperationTypes.Delete)
                       ).WithUser(currentUser1));
        }
Exemple #5
0
 public SQLiteDataSource AttachRules(SQLiteDataSource source)
 {
     return(source.WithRules(
                new DateTimeRule("CreatedDate", DateTimeKind.Local, OperationTypes.Insert),
                new DateTimeRule("UpdatedDate", DateTimeKind.Local, OperationTypes.InsertOrUpdate),
                new UserDataRule("CreatedByKey", "EmployeeKey", OperationTypes.Insert),
                new UserDataRule("UpdatedByKey", "EmployeeKey", OperationTypes.InsertOrUpdate),
                new ValidateWithValidatable(OperationTypes.InsertOrUpdate)
                ));
 }
Exemple #6
0
        internal SQLiteOpenDataSource(SQLiteDataSource dataSource, SQLiteConnection connection, SQLiteTransaction?transaction) : base(new SQLiteDataSourceSettings(dataSource))
        {
            if (connection == null)
            {
                throw new ArgumentNullException(nameof(connection), $"{nameof(connection)} is null.");
            }

            m_BaseDataSource = dataSource;
            m_Connection     = connection;
            m_Transaction    = transaction;
        }
        internal SQLiteOpenDataSource(SQLiteDataSource dataSource, SQLiteConnection connection, SQLiteTransaction transaction) : base(new SQLiteDataSourceSettings() { DefaultCommandTimeout = dataSource.DefaultCommandTimeout, StrictMode = dataSource.StrictMode, SuppressGlobalEvents = dataSource.SuppressGlobalEvents, DisableLocks = dataSource.DisableLocks })
        {
            if (connection == null)
            {
                throw new ArgumentNullException(nameof(connection), $"{nameof(connection)} is null.");
            }

            m_BaseDataSource = dataSource;
            m_Connection     = connection;
            m_Transaction    = transaction;
        }
Exemple #8
0
 static TestBase()
 {
     Setup.AssemblyInit();
     foreach (ConnectionStringSettings con in ConfigurationManager.ConnectionStrings)
     {
         var ds = new SQLiteDataSource(con.Name, con.ConnectionString);
         s_DataSources.Add(con.Name, ds);
         if (s_PrimaryDataSource == null)
         {
             s_PrimaryDataSource = ds;
         }
     }
 }
        internal SQLiteDataSourceSettings(SQLiteDataSource dataSource, bool forwardEvents)
        {
            if (dataSource == null)
            {
                throw new ArgumentNullException(nameof(dataSource), $"{nameof(dataSource)} is null.");
            }

            DefaultCommandTimeout = dataSource.DefaultCommandTimeout;
            StrictMode            = dataSource.StrictMode;
            SuppressGlobalEvents  = dataSource.SuppressGlobalEvents || forwardEvents;
            DisableLocks          = dataSource.DisableLocks;
            EnforceForeignKeys    = dataSource.EnforceForeignKeys;
        }
Exemple #10
0
        static TestBase()
        {
            Setup.AssemblyInit();
            var configuration = new ConfigurationBuilder().SetBasePath(AppContext.BaseDirectory).AddJsonFile("appsettings.json").Build();

            foreach (var con in configuration.GetSection("ConnectionStrings").GetChildren())
            {
                var ds = new SQLiteDataSource(con.Key, con.Value);
                s_DataSources.Add(con.Key, ds);
                if (s_PrimaryDataSource == null)
                {
                    s_PrimaryDataSource = ds;
                }
            }
            BuildEmployeeSearchKey1000(s_PrimaryDataSource);
        }
Exemple #11
0
    internal static void SetupTestBase()
    {
        if (s_PrimaryDataSource != null)
        {
            return;             //run once check
        }
        Setup.CreateDatabase();
        var configuration = new ConfigurationBuilder().SetBasePath(AppContext.BaseDirectory).AddJsonFile("appsettings.json").Build();

        foreach (var con in configuration.GetSection("ConnectionStrings").GetChildren())
        {
            var ds = new SQLiteDataSource(con.Key, con.Value);
            if (s_PrimaryDataSource == null)
            {
                s_PrimaryDataSource = ds;
            }

            s_DataSources.Add(con.Key, ds);
        }

        BuildEmployeeSearchKey1000(s_PrimaryDataSource);
    }
Exemple #12
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SQLiteTransactionalDataSource" /> class.
        /// </summary>
        /// <param name="dataSource">The data source.</param>
        /// <param name="forwardEvents">if set to <c>true</c> [forward events].</param>
        /// <param name="connection">The connection.</param>
        /// <param name="transaction">The transaction.</param>
        /// <param name="lockToken">The lock token.</param>
        /// <exception cref="ArgumentNullException">
        /// </exception>
        internal SQLiteTransactionalDataSource(SQLiteDataSource dataSource, bool forwardEvents, SQLiteConnection connection, SQLiteTransaction transaction, IDisposable?lockToken) : base(new SQLiteDataSourceSettings(dataSource))
        {
            if (dataSource == null)
            {
                throw new ArgumentNullException(nameof(dataSource), $"{nameof(dataSource)} is null.");
            }
            if (connection == null)
            {
                throw new ArgumentNullException(nameof(connection), $"{nameof(connection)} is null.");
            }
            if (transaction == null)
            {
                throw new ArgumentNullException(nameof(transaction), $"{nameof(transaction)} is null.");
            }
            if (lockToken == null)
            {
                throw new ArgumentNullException(nameof(lockToken), $"{nameof(lockToken)} is null.");
            }

            Name = dataSource.Name;

            m_BaseDataSource = dataSource;
            m_Connection     = connection;
            m_Transaction    = transaction;
            m_LockToken      = lockToken;

            if (forwardEvents)
            {
                ExecutionStarted  += (sender, e) => dataSource.OnExecutionStarted(e);
                ExecutionFinished += (sender, e) => dataSource.OnExecutionFinished(e);
                ExecutionError    += (sender, e) => dataSource.OnExecutionError(e);
                ExecutionCanceled += (sender, e) => dataSource.OnExecutionCanceled(e);
            }

            AuditRules = dataSource.AuditRules;
            UserValue  = dataSource.UserValue;
        }
Exemple #13
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SQLiteTransactionalDataSource" /> class.
        /// </summary>
        /// <param name="dataSource">The data source.</param>
        /// <param name="forwardEvents">if set to <c>true</c> [forward events].</param>
        /// <param name="connection">The connection.</param>
        /// <param name="transaction">The transaction.</param>
        /// <param name="lockToken">The lock token.</param>
        /// <exception cref="ArgumentNullException">
        /// </exception>
        internal SQLiteTransactionalDataSource(SQLiteDataSource dataSource, bool forwardEvents, SQLiteConnection connection, SQLiteTransaction transaction, IDisposable lockToken) : base(new SQLiteDataSourceSettings() { DefaultCommandTimeout = dataSource.DefaultCommandTimeout, StrictMode = dataSource.StrictMode, SuppressGlobalEvents = dataSource.SuppressGlobalEvents || forwardEvents, DisableLocks = dataSource.DisableLocks })
        {
            if (dataSource == null)
            {
                throw new ArgumentNullException(nameof(dataSource), $"{nameof(dataSource)} is null.");
            }
            if (connection == null)
            {
                throw new ArgumentNullException(nameof(connection), $"{nameof(connection)} is null.");
            }
            if (transaction == null)
            {
                throw new ArgumentNullException(nameof(transaction), $"{nameof(transaction)} is null.");
            }
            if (lockToken == null)
            {
                throw new ArgumentNullException(nameof(lockToken), $"{nameof(lockToken)} is null.");
            }

            Name = dataSource.Name;

            m_BaseDataSource = dataSource;
            m_Connection     = connection;
            m_Transaction    = transaction;
            m_LockToken      = lockToken;

            if (forwardEvents)
            {
                ExecutionStarted  += (sender, e) => dataSource.OnExecutionStarted(e);
                ExecutionFinished += (sender, e) => dataSource.OnExecutionFinished(e);
                ExecutionError    += (sender, e) => dataSource.OnExecutionError(e);
                ExecutionCanceled += (sender, e) => dataSource.OnExecutionCanceled(e);
            }

            AuditRules = dataSource.AuditRules;
            UserValue  = dataSource.UserValue;
        }
Exemple #14
0
    /// <summary>
    /// Creates a new data source with the indicated changes to the settings.
    /// </summary>
    /// <param name="settings">The new settings to use.</param>
    /// <returns></returns>
    /// <remarks>The new data source will share the same database metadata cache.</remarks>
    public SQLiteDataSource WithSettings(SQLiteDataSourceSettings?settings)
    {
        var mergedSettings = new SQLiteDataSourceSettings()
        {
            DefaultCommandTimeout = settings?.DefaultCommandTimeout ?? DefaultCommandTimeout,
            SuppressGlobalEvents  = settings?.SuppressGlobalEvents ?? SuppressGlobalEvents,
            StrictMode            = settings?.StrictMode ?? StrictMode,
            SequentialAccessMode  = settings?.SequentialAccessMode ?? SequentialAccessMode,
            DisableLocks          = settings?.DisableLocks ?? DisableLocks,
            EnforceForeignKeys    = settings?.EnforceForeignKeys ?? EnforceForeignKeys
        };
        var result = new SQLiteDataSource(Name, m_ConnectionBuilder, mergedSettings, m_DatabaseMetadata, m_Cache, m_ExtensionCache);

        result.m_DatabaseMetadata = m_DatabaseMetadata;
        result.AuditRules         = AuditRules;
        result.UserValue          = UserValue;

        result.ExecutionStarted  += (sender, e) => OnExecutionStarted(e);
        result.ExecutionFinished += (sender, e) => OnExecutionFinished(e);
        result.ExecutionError    += (sender, e) => OnExecutionError(e);
        result.ExecutionCanceled += (sender, e) => OnExecutionCanceled(e);

        return(result);
    }