コード例 #1
0
        protected override SnapshotObject LoadSnapshotObject(Guid sourceId)
        {
            SnapshotObject snapshot = null;

            MySql.With(_connString)
            .Reader(
                Queries.GetSnapshotSql,
                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);
        }
コード例 #2
0
        protected override void PersistSnapshot(SnapshotObject snapshotObject)
        {
            _transExecutor
            .NonQuery(
                Queries.InsertSnapshotSql,
                new Dictionary <string, object>
            {
                { "SourceId", snapshotObject.SourceId },
                { "Version", snapshotObject.Version },
                { "Timestamp", snapshotObject.Timestamp },
                { "Type", snapshotObject.Type },
                { "Data", snapshotObject.Data },
            },
                rowsAffected =>
            {
                const int expectedRows = 1;

                if (expectedRows != rowsAffected)
                {
                    throw new AffectedRowsException(rowsAffected, expectedRows, "快照源");
                }
            });

            //trans with persist events
        }