protected override SnapshotObject LoadSnapshotObject(Guid sourceId)
        {
            SnapshotObject snapshot = null;

            Pgsql.With(_connString)
            .Reader(
                Queries.GetSnapshotSql.FixSql(),
                new Dictionary <string, object>
            {
                { "SourceId", sourceId }
            },
                rdr =>
            {
                //if(!rdr.Read())return;

                snapshot = new SnapshotObject
                {
                    SourceId  = rdr.GetGuid(0),
                    Version   = rdr.GetInt32(1),
                    Timestamp = rdr.GetDateTime(2),
                    Type      = rdr.GetString(3),
                    Data      = rdr.GetString(4),
                };
            })
            .Execute();

            return(snapshot);
        }
        public EventStorageProvider()
        {
            ConnectionStringSettings connStr = ConfigurationManager.ConnectionStrings["EventStore"];

            if (null == connStr || string.IsNullOrWhiteSpace(connStr.ConnectionString))
            {
                throw new NotFoundException("未配置连接字符串:EventStore!");
            }

            _connString = connStr.ConnectionString;

            _transExecutor = Pgsql.With(connStr.ConnectionString);
        }
        protected override IEnumerable <EventObject> LoadEventObjects(Guid sourceId, int skipVersion)
        {
            var eventObjects = new List <EventObject>();

            Pgsql.With(_connString)
            .Reader(Queries.GetEventsSql.FixSql(),
                    new Dictionary <string, object>
            {
                { "SourceId", sourceId },
                { "SkipVersion", skipVersion },
            },
                    rdr =>
            {
                /*
                 * public const string GetEventsSql = @"
                 * SELECT [SourceId]
                 * ,[Version]
                 * ,[Timestamp]
                 * ,[Type]
                 * ,[Data]
                 * FROM [EventStore].[dbo].[Events]
                 * WHERE [SourceId] = @SourceId
                 * AND [Version] > @SkipVersion
                 * ";
                 */

                var obj = new EventObject
                {
                    SourceId  = rdr.GetGuid(0),
                    Version   = rdr.GetInt32(1),
                    Timestamp = rdr.GetDateTime(2),
                    Type      = rdr.GetString(3),
                    Data      = rdr.GetString(4),
                };

                eventObjects.Add(obj);
            })
            .Execute();

            return(eventObjects);
        }