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