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); }
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 }