コード例 #1
0
ファイル: OutboxContextSql.cs プロジェクト: drony/Ark.Tools
            internal Statements(IOutboxContextSqlConfig config)
            {
                var schema = config.SchemaName ?? "dbo";
                var table  = config.TableName;
                var full   = $"[{schema}].[{table}]";

                Insert = $@"
                    INSERT INTO {full}
                    (
                          [Headers]
                        , [Body]
                    )
                    VALUES
                    (
                          @pHeaders
                        , @pBody
                    )
                    ";

                PeekLock = (int messageCount) => $@"
                    ;WITH batch AS (
                        SELECT TOP ({messageCount}) *
                        FROM {full}
                        ORDER BY Id DESC)
                    DELETE FROM batch
                    WITH (READPAST, ROWLOCK, READCOMMITTEDLOCK)
                    OUTPUT
                          DELETED.[Headers]
                        , DELETED.[Body]
                    ";

                Count = $@"
                    SELECT COUNT(*) as [Count] 
                    FROM {full}
                    ";

                Clear = $@"
                    DELETE FROM {full}
                    ";

                CreateTable = $@"
                    IF NOT EXISTS (SELECT 1 FROM sys.schemas WHERE name = '{schema}')
                    BEGIN
	                    EXEC('CREATE SCHEMA {schema}')
                    END

                    IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '{schema}' AND TABLE_NAME = '{table}')
                        CREATE TABLE {full} (
                            [Id] [bigint] IDENTITY(1,1) NOT NULL,
	                        [Headers] [nvarchar](MAX) NOT NULL,
	                        [Body] [varbinary](MAX) NOT NULL,
                            CONSTRAINT [PK_{table}] PRIMARY KEY CLUSTERED 
                            (
	                            [Id] ASC
                            )
                        )
  
                    ";
            }
コード例 #2
0
 protected AbstractSqlContextWithOutbox(DbConnection connection, IOutboxContextSqlConfig config, IsolationLevel isolationLevel = IsolationLevel.ReadCommitted)
     : base(connection, isolationLevel)
 {
     _outbox = new OutboxContextSql <Tag>(this, config);
 }
コード例 #3
0
ファイル: OutboxContextSql.cs プロジェクト: drony/Ark.Tools
 public OutboxContextSql(ISqlContext <Tag> sqlContextParent, IOutboxContextSqlConfig config)
 {
     _sqlContext = sqlContextParent;
     _config     = config;
     _statements = new Statements(config);
 }