コード例 #1
0
        protected override void OnExecute()
        {
            using (var cn = OpenSourceConnection())
            {
                using (var tn = cn.BeginTransaction(IsolationLevel.ReadUncommitted))
                {
                    using (var cmd = CreateSourceCommand(cn, tn))
                    {
                        var guid = Guid.NewGuid();
                        var ccmd = new CancelableDbCommand(cmd);
                        RegisterCancelable(guid, ccmd);

                        ccmd.ExecuteReader(dr =>
                            {
                                destination.WriteFromDataReader(dr);
                            });

                        UnregisterCancelable(guid);
                    }

                    tn.Commit();
                }
            }
        }
コード例 #2
0
ファイル: QueryImporter.cs プロジェクト: horvatferi/graywulf
        protected override void OnExecute()
        {
            if ((Destination.Operation & DestinationTableOperation.Drop) != 0)
            {
                DropDestinationTable();
            }

            using (var cn = OpenSourceConnection())
            {
                using (var tn = cn.BeginTransaction(IsolationLevel.ReadUncommitted))
                {
                    using (var cmd = CreateSourceCommand(cn, tn))
                    {
                        var guid = Guid.NewGuid();
                        var ccmd = new CancelableDbCommand(cmd);
                        RegisterCancelable(guid, ccmd);

                        ccmd.ExecuteReader(dr =>
                        {
                            // *** TODO: implement other options
                            if ((Destination.Operation & DestinationTableOperation.Append) != 0)
                            {
                                // TODO: compare schema
                            }
                            else if ((Destination.Operation & DestinationTableOperation.Create) != 0)
                            {
                                CreateDestinationTable(dr.GetSchemaTable());
                            }
                            else
                            {
                                throw new NotImplementedException();
                            }

                            ExecuteBulkCopy(dr);
                        });

                        UnregisterCancelable(guid);
                    }

                    tn.Commit();
                }
            }
        }
コード例 #3
0
ファイル: CopyTableBase.cs プロジェクト: skyquery/graywulf
        protected void ImportTable(IDbCommand cmd, DestinationTable destination)
        {
            var guid = Guid.NewGuid();
            var ccmd = new CancelableDbCommand(cmd);
            RegisterCancelable(guid, ccmd);

            ccmd.ExecuteReader(dr =>
            {
                // TODO: Add multiple results logic

                // TODO: Add table naming logic here, maybe...
                var table = destination.GetTable();

                table.Initialize(dr.GetSchemaTable(), destination.Options);
                ExecuteBulkCopy(dr, table);
            });

            UnregisterCancelable(guid);
        }
コード例 #4
0
ファイル: CopyTableBase.cs プロジェクト: skyquery/graywulf
        private void WriteTable(IDbCommand cmd, DataFileBase destination)
        {
            // Wrap command into a cancellable task
            var guid = Guid.NewGuid();
            var ccmd = new CancelableDbCommand(cmd);
            RegisterCancelable(guid, ccmd);

            // Pass data reader to the file formatter
            ccmd.ExecuteReader(dr =>
            {
                destination.WriteFromDataReader(dr);
            });

            UnregisterCancelable(guid);
        }
コード例 #5
0
ファイル: QueryObject.cs プロジェクト: horvatferi/graywulf
        protected void ExecuteLongCommandReader(SqlCommand cmd, Action<IDataReader> action)
        {
            var guid = Guid.NewGuid();
            var ccmd = new CancelableDbCommand(cmd);

            RegisterCancelable(guid, ccmd);

            try
            {
                ccmd.ExecuteReader(action);
            }
            finally
            {
                UnregisterCancelable(guid);
            }
        }