private int GetLastComitedVersion(T eventSourced, EventStoreDbContext context)
        {
            // Checking if this is the first ever event for this aggregate
            // Another option could be use the T-SQL method 'ISNULL'.
            // For expample: "SELECT LastVersion = ISNULL(Max([e].[Version]), -1)"
            var lastCommitedVersion = context.Database.SqlQuery <int?>(
                string.Format(@"
SELECT LastVersion = Max([e].[Version])
FROM 
(SELECT [Version] 
FROM [{0}].[{1}] WITH (READPAST)
WHERE SourceId = @SourceId
	AND SourceType = @SourceType)
e
", EventStoreDbContext.EventStoreSchemaName, EventStoreDbContext.EventsTableName),
                new SqlParameter("@SourceId", eventSourced.Id),
                new SqlParameter("@SourceType", _sourceType))
                                      .FirstOrDefault() as int? ?? default(int);

            return(lastCommitedVersion);
        }
Exemplo n.º 2
0
 public InMemoryEventStore(IInMemoryBus bus, ITextSerializer serializer, EventStoreDbContext context, ITracer tracer, ISystemTime dateTime, ISnapshotProvider snapshoter, IMetadataProvider metadataProvider)
     : base(tracer, serializer, dateTime, snapshoter, metadataProvider)
 {
     this.bus     = bus;
     this.context = context;
 }