public IDbTracing CreateTracing <TQuery>(IDbExecutor <TQuery> executor, TQuery query) where TQuery : IDbQuery
        {
            var tracing = new DbTracing(query);

            _list.Add(tracing);
            return(tracing);
        }
Exemple #2
0
 /// <summary>
 /// 初始化类<see cref="DbContextBase{TModel}"/>。
 /// </summary>
 /// <param name="executor">数据库执行接口。</param>
 /// <param name="logger">日志接口。</param>
 /// <param name="sqlHelper">SQL辅助接口。</param>
 /// <param name="sqlGenerator">脚本生成器。</param>
 /// <param name="visitorFactory">条件表达式解析器工厂实例。</param>
 public DbTransactionContext(IDbExecutor executor, ILogger logger, ISqlHelper sqlHelper,
                             IQuerySqlGenerator sqlGenerator, IExpressionVisitorFactory visitorFactory)
     : base(executor, logger, sqlHelper, sqlGenerator, visitorFactory)
 {
     _executor       = executor;
     _visitorFactory = visitorFactory;
 }
Exemple #3
0
 private void PrepareDataForRestore(
     IDbExecutor dbExecutor)
 {
     Log.Info("Deleting incomplete jobs.");
     dbExecutor.Execute("DELETE FROM WorkItems WHERE Completed IS NULL");
     Log.Info("Deleted incomplete jobs.");
 }
Exemple #4
0
        public bool TryAddDbExecutor(IDbExecutor dbExecutor)
        {
            CheckValue.NotNull(dbExecutor, nameof(dbExecutor));

            //added executor.Guarantee that it will eventually be released
            AddedExecutors.AddIfNotContains(dbExecutor);

            if (!EnsureToOpenTransaction())
            {
                return(true);
            }

            if (dbExecutor.HasTransaction)
            {
                return(true);
            }

            bool result         = false;
            var  transactionObj = OpenTransactionAndGiveExecutor(_transactions, dbExecutor);

            if (transactionObj != null)
            {
                //reused or new?
                if (!CreatedTransactions.Any(s => s.ID == transactionObj.ID))
                {
                    CreatedTransactions.Add(transactionObj);
                }

                result = true;
            }

            return(result);
        }
 private void PrepareDataForRestore(
     IDbExecutor dbExecutor)
 {
     Log.Info("Deleting incomplete jobs.");
     dbExecutor.Execute("DELETE FROM WorkItems WHERE Completed IS NULL");
     Log.Info("Deleted incomplete jobs.");
 }
Exemple #6
0
        public PgsqlDbEngine(NpgsqlConnectionStringBuilder connectionString, string logPath)
        {
            _connectionString = connectionString;
            _logPath          = logPath;

            _executor = null;
        }
        public DatabaseFixture()
        {
            Sql.MappingCheckEnabled = true;
            ISqlAdapter.Current     = new SqlServerAdapter();

            Db = new DbExecutor(ConnectionString);
        }
        public IDbTracing CreateTracing(IDbExecutor executor, DbQuery query)
        {
            var tracing = new DbTracing(query);

            _list.Add(tracing);
            return(tracing);
        }
Exemple #9
0
 public ContactRepository(IContactMapper contactMapper, IContactsQueryBuilder contactsQueryBuilder, IDbExecutor dbExecutor, IDatabase database)
 {
     _contactMapper        = contactMapper;
     _contactsQueryBuilder = contactsQueryBuilder;
     _dbExecutor           = dbExecutor;
     _database             = database;
 }
Exemple #10
0
        public MssqlDbEngine(SqlConnectionStringBuilder connectionString, string logPath)
        {
            _connectionString = connectionString;
            _logPath          = logPath;

            _executor = new MssqlAdoExecutor(_connectionString.ToString());
        }
Exemple #11
0
 internal static PackageRegistration GetPackageRegistration(
     IDbExecutor dbExecutor,
     string id)
 {
     return(dbExecutor.Query <PackageRegistration>(
                "SELECT [Key], Id FROM PackageRegistrations WHERE Id = @id",
                new { id }).SingleOrDefault());
 }
Exemple #12
0
 internal static IEnumerable <Package> GetPackages(
     IDbExecutor dbExecutor,
     int packageRegistrationKey)
 {
     return(dbExecutor.Query <Package>(
                "SELECT pr.Id, p.Version FROM Packages p JOIN PackageRegistrations PR on pr.[Key] = p.PackageRegistrationKey WHERE pr.[Key] = @packageRegistrationKey",
                new { packageRegistrationKey }));
 }
Exemple #13
0
 /// <summary>
 /// 初始化类<see cref="QueryContext{TModel}"/>。
 /// </summary>
 /// <param name="sqlHelper">SQL辅助接口。</param>
 /// <param name="visitorFactory">表达式解析工厂接口。</param>
 /// <param name="sqlGenerator">SQL脚本生成接口。</param>
 /// <param name="db">数据库接口。</param>
 public QueryContext(ISqlHelper sqlHelper, IExpressionVisitorFactory visitorFactory, IQuerySqlGenerator sqlGenerator, IDbExecutor db)
 {
     _visitorFactory = visitorFactory;
     _sqlGenerator   = sqlGenerator;
     _db             = db;
     SqlHelper       = sqlHelper;
     Entity          = typeof(TModel).GetEntityType();
 }
Exemple #14
0
 protected DbQuery(IDbExecutor dbExecutor)
 {
     if (dbExecutor == null)
     {
         throw new ArgumentNullException(nameof(dbExecutor));
     }
     DbExecutor = dbExecutor;
 }
Exemple #15
0
 protected DbCommandAsync(IDbExecutor dbExecutor)
 {
     if (dbExecutor == null)
     {
         throw new ArgumentNullException(nameof(dbExecutor));
     }
     DbExecutor = dbExecutor;
 }
        public DatabaseFixture()
        {
            Sql.MappingCheckEnabled = true;
            ISqlAdapter.Current     = new PostgreSqlAdapter();
            DefaultTypeMap.MatchNamesWithUnderscores = true;

            Db = new DbExecutor(ConnectionString);
        }
 private void RenameDatabaseBackup(
     IDbExecutor masterDbExecutor,
     string restoreDbName)
 {
     Log.Info("Renaming {0} to NuGetGallery.", restoreDbName);
     var sql = string.Format("ALTER DATABASE {0} MODIFY Name = NuGetGallery", restoreDbName);
     masterDbExecutor.Execute(sql);
     Log.Info("Renamed {0} to NuGetGallery.", restoreDbName);
 }
Exemple #18
0
 internal static Package GetPackage(
     IDbExecutor dbExecutor,
     string id,
     string version)
 {
     return(dbExecutor.Query <Package>(
                "SELECT p.[Key], pr.Id, p.Version, p.NormalizedVersion, p.Hash FROM Packages p JOIN PackageRegistrations pr ON pr.[Key] = p.PackageRegistrationKey WHERE pr.Id = @id AND p.Version = @version",
                new { id, version }).SingleOrDefault());
 }
Exemple #19
0
 /// <summary>
 /// 初始化类<see cref="DbContextBase{TModel}"/>。
 /// </summary>
 /// <param name="executor">数据库执行接口。</param>
 /// <param name="logger">日志接口。</param>
 /// <param name="sqlHelper">SQL辅助接口。</param>
 /// <param name="sqlGenerator">脚本生成器。</param>
 /// <param name="visitorFactory">条件表达式解析器工厂实例。</param>
 protected DbContextBase(IDbExecutor executor, ILogger logger, ISqlHelper sqlHelper, IQuerySqlGenerator sqlGenerator, IExpressionVisitorFactory visitorFactory)
 {
     Logger          = logger;
     SqlHelper       = sqlHelper;
     SqlGenerator    = sqlGenerator;
     _executor       = executor;
     _visitorFactory = visitorFactory;
     EntityType      = typeof(TModel).GetEntityType();
 }
Exemple #20
0
        private void RenameDatabaseBackup(
            IDbExecutor masterDbExecutor,
            string restoreDbName)
        {
            Log.Info("Renaming {0} to NuGetGallery.", restoreDbName);
            var sql = $"ALTER DATABASE {restoreDbName} MODIFY Name = NuGetGallery";

            masterDbExecutor.Execute(sql);
            Log.Info("Renamed {0} to NuGetGallery.", restoreDbName);
        }
Exemple #21
0
        public static Database GetDatabase(
            IDbExecutor dbExecutor,
            string databaseName)
        {
            var dbs = dbExecutor.Query<Database>(
                "SELECT name, state FROM sys.databases WHERE name = @databaseName",
                new { databaseName });

            return dbs.SingleOrDefault();
        }
Exemple #22
0
        public static Db GetDatabase(
            IDbExecutor dbExecutor,
            string databaseName)
        {
            var dbs = dbExecutor.Query <Db>(
                "SELECT name, state FROM sys.databases WHERE name = @databaseName",
                new { databaseName });

            return(dbs.SingleOrDefault());
        }
Exemple #23
0
        public static bool DatabaseExistsAndIsOnline(
            IDbExecutor dbExecutor,
            string restoreName)
        {
            var backupDbs = dbExecutor.Query <Db>(
                "SELECT name, state FROM sys.databases WHERE name = @restoreName AND state = @state",
                new { restoreName, state = OnlineState })
                            .OrderByDescending(database => database.Name);

            return(backupDbs.FirstOrDefault() != null);
        }
Exemple #24
0
        public static bool DatabaseExistsAndIsOnline(
            IDbExecutor dbExecutor,
            string restoreName)
        {
            var backupDbs = dbExecutor.Query<Database>(
                "SELECT name, state FROM sys.databases WHERE name = @restoreName AND state = @state",
                new { restoreName, state = OnlineState })
                .OrderByDescending(database => database.Name);

            return backupDbs.FirstOrDefault() != null;
        }
        public int Create(IDbExecutor dbExecutor, Driver driver)
        {
            var insertDriverSql = $@"
insert into Drivers(FullName, Phone)
values (""{driver.FullName}"", ""{driver.Phone}"");

select last_insert_rowid();
";
            var driverId        = dbExecutor.Query <int>(insertDriverSql).First();

            return(driverId);
        }
Exemple #26
0
        private void RenameLiveDatabase(
            IDbExecutor masterDbExecutor)
        {
            var timestamp  = Util.GetTimestamp();
            var liveDbName = "Live_" + timestamp;

            Log.Info("Renaming NuGetGallery to {0}.", liveDbName);
            var sql = $"ALTER DATABASE NuGetGallery MODIFY Name = {liveDbName}";

            masterDbExecutor.Execute(sql);
            Log.Info("Renamed NuGetGallery to {0}.", liveDbName);
        }
Exemple #27
0
 /// <summary>
 /// 执行分页查询命令,并返回表。
 /// </summary>
 /// <param name="executor">执行器。</param>
 /// <param name="page">一个分页的实现。</param>
 /// <returns>一张包含总记录数的表。</returns>
 public static PageTable ToTable(this IDbExecutor executor, IPagination page)
 {
     if (executor == null)
     {
         throw new ArgumentNullException(nameof(executor));
     }
     if (page == null)
     {
         throw new ArgumentNullException(nameof(page));
     }
     return(executor.ToTable(page.PageNumber, page.PageSize));
 }
Exemple #28
0
 /// <summary>
 /// 异步执行分页查询命令,并返回匿名实体的集合。
 /// </summary>
 /// <param name="executor">执行器。</param>
 /// <param name="cancellationToken">针对取消请求监视的标记。</param>
 /// <param name="page">一个分页的实现。</param>
 /// <returns>包含总记录数的匿名实体的集合。</returns>
 public static Task <PageData <dynamic> > ToEntitiesAsync(this IDbExecutor executor, CancellationToken cancellationToken, IPagination page)
 {
     if (executor == null)
     {
         throw new ArgumentNullException(nameof(executor));
     }
     if (page == null)
     {
         throw new ArgumentNullException(nameof(page));
     }
     return(executor.ToEntitiesAsync(cancellationToken, page.PageNumber, page.PageSize));
 }
Exemple #29
0
 /// <summary>
 /// 执行分页查询命令,并返回匿名实体的集合。
 /// </summary>
 /// <param name="executor">执行器。</param>
 /// <param name="page">一个分页的实现。</param>
 /// <returns>包含总记录数的匿名实体的集合。</returns>
 public static PageData <dynamic> ToEntities(this IDbExecutor executor, IPagination page)
 {
     if (executor == null)
     {
         throw new ArgumentNullException(nameof(executor));
     }
     if (page == null)
     {
         throw new ArgumentNullException(nameof(page));
     }
     return(executor.ToEntities(page.PageNumber, page.PageSize));
 }
 private void StartBackupCopy(
     IDbExecutor dbExecutor, 
     string sourceDbServerName,
     string destinationDbServerName,
     string sourceDbName,
     string copyDbName)
 {
     Log.Trace("Starting copy of {0} from {1} to {2}.", sourceDbName, sourceDbServerName, destinationDbServerName);
     if (!WhatIf)
     {
         var sql = string.Format("CREATE DATABASE {0} AS COPY OF {1}.{2}", copyDbName, sourceDbServerName, sourceDbName);
         dbExecutor.Execute(sql);
     }
     Log.Info("Copying {0} from {1} to {2}.", sourceDbName, sourceDbServerName, destinationDbServerName);
 }
 private void StartBackupCopy(
     IDbExecutor dbExecutor,
     string sourceDbServerName,
     string destinationDbServerName,
     string sourceDbName,
     string copyDbName)
 {
     Log.Trace("Starting copy of {0} from {1} to {2}.", sourceDbName, sourceDbServerName, destinationDbServerName);
     if (!WhatIf)
     {
         var sql = $"CREATE DATABASE {copyDbName} AS COPY OF {sourceDbServerName}.{sourceDbName}";
         dbExecutor.Execute(sql);
     }
     Log.Info("Copying {0} from {1} to {2}.", sourceDbName, sourceDbServerName, destinationDbServerName);
 }
Exemple #32
0
        protected virtual async Task <ITransactionObject> OpenTransactionAndGiveExecutorAsync(
            IEnumerable <ITransactionProvider> transactionProviders,
            IDbExecutor dbExecutor,
            CancellationToken cancellationToken)
        {
            //if not any provider,reutrn false.
            if (transactionProviders.Count() == 0)
            {
                return(null);
            }

            ITransactionObject exceptedTransaction = null;

            foreach (var transactionProvider in transactionProviders)
            {
                if (!transactionProvider.CanCreate(dbExecutor))
                {
                    continue;
                }

                //already has transaction,can reused?
                if (CreatedTransactions.Count > 0)
                {
                    var reusedTransaction = transactionProvider.Reused(CreatedTransactions, dbExecutor);

                    if (reusedTransaction != null)
                    {
                        //reused this transaction,and back.
                        await dbExecutor.UseTransactionAsync(reusedTransaction, cancellationToken);

                        return(reusedTransaction);
                    }
                }

                //create new transaction.
                exceptedTransaction = await transactionProvider.GetTransactionObjectAsync(new CreateTransactionContext(this, dbExecutor), cancellationToken);

                if (exceptedTransaction != null)
                {
                    await dbExecutor.UseTransactionAsync(exceptedTransaction, cancellationToken);

                    break;
                }
                //if exceptedTransaction is null,let the next provider create.
            }

            return(exceptedTransaction);
        }
Exemple #33
0
        internal static User GetUser(
            IDbExecutor dbExecutor,
            string username)
        {
            var user = dbExecutor.Query <User>(
                "SELECT u.[Key], u.Username, u.EmailAddress, u.UnconfirmedEmailAddress FROM Users u WHERE u.Username = @username",
                new { username }).SingleOrDefault();

            if (user != null)
            {
                user.PackageRegistrationIds = dbExecutor.Query <string>(
                    "SELECT r.[Id] FROM PackageRegistrations r INNER JOIN PackageRegistrationOwners o ON o.PackageRegistrationKey = r.[Key] WHERE o.UserKey = @userKey AND NOT EXISTS(SELECT * FROM PackageRegistrationOwners other WHERE other.PackageRegistrationKey = r.[Key] AND other.UserKey != @userKey)",
                    new { userkey = user.Key });
            }

            return(user);
        }
Exemple #34
0
        /// <summary>
        /// 尝试创建 IDbTracing 对象
        /// </summary>
        /// <param name="executor">查询执行器</param>
        /// <param name="query">即将执行的查询对象</param>
        /// <returns>追踪该查询执行过程的 IDbTracing 对象</returns>
        protected IDbTracing TryCreateTracing(IDbExecutor executor, DbQuery query)
        {
            var traceSerivce = query.Configures.GetService <IDbTraceService>() ?? TraceService;

            if (traceSerivce == null)
            {
                return(null);
            }

            try
            {
                return(traceSerivce.CreateTracing(executor, query));
            }
            catch
            {
                return(null);
            }
        }
Exemple #35
0
        public DataLayerFixture()
        {
            ContainerBuilder builder = new ContainerBuilder();

            builder.RegisterModule <Bloemert.Data.Core.ModuleLoader>();
            builder.RegisterModule <Bloemert.Lib.Config.ModuleLoader>();

            builder.RegisterType <TestRepository>()
            .As <ITestRepository>()
            .SingleInstance();


            IoC = builder.Build();


            Db = IoC.Resolve <IDbExecutor>();

            CreateTestTable();
        }
 public SqlServerRepository(IDbExecutor connection)
 {
     _connection = connection;
 }
Exemple #37
0
 public HomeController(IDbExecutor dbConnection, IResponse response)
 {
     _response = response;
     _dbConnection = dbConnection;
 }
Exemple #38
0
        internal static User GetUser(
            IDbExecutor dbExecutor,
            string username)
        {
            var user = dbExecutor.Query<User>(
                "SELECT u.[Key], u.Username, u.EmailAddress, u.UnconfirmedEmailAddress FROM Users u WHERE u.Username = @username",
                new { username }).SingleOrDefault();

            if (user != null)
            {
                user.PackageRegistrationIds = dbExecutor.Query<string>(
                    "SELECT r.[Id] FROM PackageRegistrations r INNER JOIN PackageRegistrationOwners o ON o.PackageRegistrationKey = r.[Key] WHERE o.UserKey = @userKey AND NOT EXISTS(SELECT * FROM PackageRegistrationOwners other WHERE other.PackageRegistrationKey = r.[Key] AND other.UserKey != @userKey)",
                    new { userkey = user.Key });
            }

            return user;
        }
Exemple #39
0
 internal static IEnumerable<Package> GetPackages(
     IDbExecutor dbExecutor,
     int packageRegistrationKey)
 {
     return dbExecutor.Query<Package>(
         "SELECT pr.Id, p.Version FROM Packages p JOIN PackageRegistrations PR on pr.[Key] = p.PackageRegistrationKey WHERE pr.[Key] = @packageRegistrationKey",
         new { packageRegistrationKey });
 }
Exemple #40
0
 internal static PackageRegistration GetPackageRegistration(
     IDbExecutor dbExecutor,
     string id)
 {
     return dbExecutor.Query<PackageRegistration>(
         "SELECT [Key], Id FROM PackageRegistrations WHERE Id = @id",
         new { id }).SingleOrDefault();
 }
Exemple #41
0
 internal static Package GetPackage(
     IDbExecutor dbExecutor,
     string id,
     string version)
 {
     return dbExecutor.Query<Package>(
         "SELECT p.[Key], pr.Id, p.Version, p.NormalizedVersion, p.Hash FROM Packages p JOIN PackageRegistrations pr ON pr.[Key] = p.PackageRegistrationKey WHERE pr.Id = @id AND p.Version = @version",
         new { id, version }).SingleOrDefault();
 }
 private void RenameLiveDatabase(
     IDbExecutor masterDbExecutor)
 {
     var timestamp = Util.GetTimestamp();
     var liveDbName = "Live_" + timestamp;
     Log.Info("Renaming NuGetGallery to {0}.", liveDbName);
     var sql = string.Format("ALTER DATABASE NuGetGallery MODIFY Name = {0}", liveDbName);
     masterDbExecutor.Execute(sql);
     Log.Info("Renamed NuGetGallery to {0}.", liveDbName);
 }
 public void Setup()
 {
     _dbConnection = Substitute.For<IDbExecutor>();
 }