Exemple #1
0
        protected virtual void GetData(Dictionary <int, ContentModification> newValues)
        {
            // при возникновении исключения в базе, даже если его перехватить
            // родительская транзакция все равно откатывается, и дальнейшая работа с базой будет вызывать ошибки.
            // чтобы этого не было, выполняем код вне родительской транзакции (TransactionScopeOption.Suppress).
            using (var tsSuppressed = new TransactionScope(TransactionScopeOption.Suppress))
            {
                if (newValues == null)
                {
                    throw new ArgumentNullException(nameof(newValues));
                }

                using (SqlConnection con = new SqlConnection(_connectionString))
                {
                    using (SqlCommand cmd = new SqlCommand(_cmdText, con))
                    {
                        cmd.CommandType = CommandType.Text;
                        con.Open();

                        try
                        {
                            // производим запрос - без этого не будет работать dependency
                            using (var reader = cmd.ExecuteReader())
                            {
                                while (reader.Read())
                                {
                                    var item = new ContentModification
                                    {
                                        ContentId     = Convert.ToInt32(reader["CONTENT_ID"]),
                                        LiveModified  = Convert.ToDateTime(reader["LIVE_MODIFIED"]),
                                        StageModified = Convert.ToDateTime(reader["STAGE_MODIFIED"])
                                    };

                                    newValues[item.ContentId] = item;
                                }
                            }
                        }
                        finally
                        {
                            con.Close();
                        }
                    }
                }
                tsSuppressed.Complete();
            }
        }
        protected override void GetData(Dictionary <int, ContentModification> newValues)
        {
            DatabaseType dbType     = (DatabaseType)Enum.Parse(typeof(DatabaseType), DbType);
            DbConnection connection = dbType == DatabaseType.SqlServer
                ? (DbConnection) new SqlConnection(ConnectionString)
                : new NpgsqlConnection(ConnectionString);

            using (connection)
            {
                string query = GetCmdText(dbType);

                DbCommand cmd = dbType == DatabaseType.SqlServer
                    ? (DbCommand) new SqlCommand(query)
                    : new NpgsqlCommand(query);
                cmd.Connection = connection;
                using (cmd)
                {
                    cmd.CommandType = CommandType.Text;
                    if (connection.State != ConnectionState.Open)
                    {
                        connection.Open();
                    }
                    // производим запрос - без этого не будет работать dependency
                    using (var reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            var item = new ContentModification
                            {
                                ContentId     = Convert.ToInt32(reader["CONTENT_ID"]),
                                LiveModified  = Convert.ToDateTime(reader["LIVE_MODIFIED"]),
                                StageModified = Convert.ToDateTime(reader["STAGE_MODIFIED"])
                            };

                            newValues[item.ContentId] = item;
                        }
                    }
                }
            }
        }
        protected override void GetData(Dictionary <int, ContentModification> newValues)
        {
            Enum.TryParse <DatabaseType>(DbType, out var dbType);

            using (var cs = new QPConnectionScope(ConnectionString, dbType))
            {
                var       con   = cs.DbConnection;
                string    query = string.Format(_cmdText, SqlQuerySyntaxHelper.WithNoLock(dbType));
                DbCommand cmd   = dbType == DatabaseType.SqlServer
                    ? (DbCommand) new SqlCommand(query)
                    : new NpgsqlCommand(query);

                using (cmd)
                {
                    cmd.CommandType = CommandType.Text;
                    if (con.State != ConnectionState.Open)
                    {
                        con.Open();
                    }
                    // производим запрос - без этого не будет работать dependency
                    using (var reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            var item = new ContentModification
                            {
                                ContentId     = Convert.ToInt32(reader["CONTENT_ID"]),
                                LiveModified  = Convert.ToDateTime(reader["LIVE_MODIFIED"]),
                                StageModified = Convert.ToDateTime(reader["STAGE_MODIFIED"])
                            };

                            newValues[item.ContentId] = item;
                        }
                    }
                }
            }

            //tsSuppressed.Complete();
        }