/// <summary>
    /// Initializes a new instance of the <see cref="OleDbSqlServerTransactionalDataSource"/> class.
    /// </summary>
    /// <param name="dataSource">The parent connection.</param>
    /// <param name="transactionName">Name of the transaction.</param>
    /// <param name="isolationLevel">The isolation level. If not supplied, will use the database default.</param>
    /// <param name="forwardEvents">If true, logging events are forwarded to the parent connection.</param>
    public OleDbSqlServerTransactionalDataSource(OleDbSqlServerDataSource dataSource, string?transactionName, IsolationLevel?isolationLevel, bool forwardEvents) : base(new SqlServerDataSourceSettings(dataSource, forwardEvents))
    {
        Name = dataSource.Name;

        m_BaseDataSource = dataSource;
        m_Connection     = dataSource.CreateConnection();
        TransactionName  = transactionName;

        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;
    }
예제 #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="OleDbSqlServerTransactionalDataSource"/> class.
        /// </summary>
        /// <param name="dataSource">The parent connection.</param>
        /// <param name="transactionName">Name of the transaction.</param>
        /// <param name="isolationLevel">The isolation level. If not supplied, will use the database default.</param>
        /// <param name="forwardEvents">If true, logging events are forwarded to the parent connection.</param>
        public OleDbSqlServerTransactionalDataSource(OleDbSqlServerDataSource dataSource, string transactionName, IsolationLevel?isolationLevel, bool forwardEvents) : base(new SqlServerDataSourceSettings() { DefaultCommandTimeout = dataSource.DefaultCommandTimeout, StrictMode = dataSource.StrictMode, SuppressGlobalEvents = dataSource.SuppressGlobalEvents || forwardEvents })
        {
            Name = dataSource.Name;

            m_BaseDataSource  = dataSource;
            m_Connection      = dataSource.CreateConnection();
            m_TransactionName = transactionName;

            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;
        }
예제 #3
0
파일: TestBase.cs 프로젝트: MARF-TECH/Chain
        public OleDbSqlServerDataSource AttachSoftDeleteRulesWithUser(OleDbSqlServerDataSource source)
        {
            var currentUser1 = source.From(EmployeeTableName).WithLimits(1).ToObject <Employee>().Execute();

            return(source.WithRules(
                       new SoftDeleteRule("DeletedFlag", true),
                       new UserDataRule("DeletedByKey", "EmployeeKey", OperationTypes.Delete),
                       new DateTimeRule("DeletedDate", DateTimeKind.Local, OperationTypes.Delete)
                       ).WithUser(currentUser1));
        }
예제 #4
0
파일: TestBase.cs 프로젝트: MARF-TECH/Chain
 public OleDbSqlServerDataSource AttachRules(OleDbSqlServerDataSource 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)
                ));
 }
예제 #5
0
        internal OleDbSqlServerOpenDataSource(OleDbSqlServerDataSource dataSource, OleDbConnection connection, OleDbTransaction transaction) : base(new SqlServerDataSourceSettings() { DefaultCommandTimeout = dataSource.DefaultCommandTimeout, StrictMode = dataSource.StrictMode, SuppressGlobalEvents = dataSource.SuppressGlobalEvents })
        {
            if (connection == null)
            {
                throw new ArgumentNullException(nameof(connection), $"{nameof(connection)} is null.");
            }

            m_BaseDataSource = dataSource;
            m_Connection     = connection;
            m_Transaction    = transaction;
        }
        internal SqlServerDataSourceSettings(OleDbSqlServerDataSource 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;
        }
    internal OleDbSqlServerOpenDataSource(OleDbSqlServerDataSource dataSource, OleDbConnection connection, OleDbTransaction?transaction) : base(new SqlServerDataSourceSettings(dataSource))
    {
        if (connection == null)
        {
            throw new ArgumentNullException(nameof(connection), $"{nameof(connection)} is null.");
        }

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

        DefaultCommandTimeout = dataSource.DefaultCommandTimeout;
        StrictMode            = dataSource.StrictMode;
        SequentialAccessMode  = dataSource.SequentialAccessMode;
        SuppressGlobalEvents  = dataSource.SuppressGlobalEvents || forwardEvents;
        ArithAbort            = dataSource.ArithAbort;
        XactAbort             = dataSource.XactAbort;
    }
        /// <summary>
        /// Initializes a new instance of the <see cref="SqlServerTransactionalDataSource" /> class.
        /// </summary>
        /// <param name="dataSource">The parent connection.</param>
        /// <param name="transactionName">Name of the transaction.</param>
        /// <param name="forwardEvents">If true, logging events are forwarded to the parent connection.</param>
        /// <param name="connection">The connection.</param>
        /// <param name="transaction">The transaction.</param>
        internal OleDbSqlServerTransactionalDataSource(OleDbSqlServerDataSource dataSource, string transactionName, bool forwardEvents, OleDbConnection connection, OleDbTransaction transaction) : base(new SqlServerDataSourceSettings() { DefaultCommandTimeout = dataSource.DefaultCommandTimeout, StrictMode = dataSource.StrictMode, SuppressGlobalEvents = dataSource.SuppressGlobalEvents || forwardEvents })
        {
            Name = dataSource.Name;

            m_BaseDataSource  = dataSource;
            m_Connection      = connection;
            m_TransactionName = transactionName;
            m_Transaction     = transaction;

            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;
        }
    /// <summary>
    /// Initializes a new instance of the <see cref="OleDbSqlServerTransactionalDataSource" /> class.
    /// </summary>
    /// <param name="dataSource">The parent connection.</param>
    /// <param name="transactionName">Name of the transaction.</param>
    /// <param name="forwardEvents">If true, logging events are forwarded to the parent connection.</param>
    /// <param name="connection">The connection.</param>
    /// <param name="transaction">The transaction.</param>
    internal OleDbSqlServerTransactionalDataSource(OleDbSqlServerDataSource dataSource, string?transactionName, bool forwardEvents, OleDbConnection connection, OleDbTransaction transaction) : base(new SqlServerDataSourceSettings(dataSource, forwardEvents))
    {
        Name = dataSource.Name;

        m_BaseDataSource = dataSource;
        m_Connection     = connection;
        TransactionName  = transactionName;
        m_Transaction    = transaction;

        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;
    }
예제 #12
0
파일: TestBase.cs 프로젝트: MARF-TECH/Chain
        internal static void SetupTestBase()
        {
            if (s_PrimaryDataSource != null)
            {
                return; //run once check
            }
            var configuration = new ConfigurationBuilder().SetBasePath(AppContext.BaseDirectory).AddJsonFile("appsettings.json").Build();

            foreach (var con in configuration.GetSection("ConnectionStrings").GetChildren())
            {
                var ds = new OleDbSqlServerDataSource(con.Key, con.Value);
                s_DataSources.Add(con.Key, ds);
                if (s_PrimaryDataSource == null)
                {
                    s_PrimaryDataSource = ds;
                }
            }
            BuildEmployeeSearchKey1000_NoTrans(s_PrimaryDataSource);
            //BuildEmployeeSearchKey1000(s_PrimaryDataSource);
        }
예제 #13
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 OleDbSqlServerDataSource WithSettings(SqlServerDataSourceSettings?settings)
    {
        var mergedSettings = new SqlServerDataSourceSettings()
        {
            DefaultCommandTimeout = settings?.DefaultCommandTimeout ?? DefaultCommandTimeout,
            SuppressGlobalEvents  = settings?.SuppressGlobalEvents ?? SuppressGlobalEvents,
            StrictMode            = settings?.StrictMode ?? StrictMode,
            SequentialAccessMode  = settings?.SequentialAccessMode ?? SequentialAccessMode,
            XactAbort             = settings?.XactAbort ?? XactAbort,
            ArithAbort            = settings?.ArithAbort ?? ArithAbort
        };
        var result = new OleDbSqlServerDataSource(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);
    }