public AggregateRoot <Flight> Deserialize(JsonSerializerSettings jsonSerializerSettings) { var flight = JsonConvert.DeserializeObject <Flight>(JsonDocument, jsonSerializerSettings) ?? throw new DataException($"JsonDocument is null."); var versionTag = VersionTagConverter.FromBytes(VersionTag); return(AggregateRoot.Create(flight, versionTag)); }
public FlightDetails Deserialize(JsonSerializerSettings jsonSerializerSettings) { var versionTag = VersionTagConverter.FromBytes(VersionTag); var bookings = JsonConvert.DeserializeObject <IEnumerable <Booking> >(Bookings, jsonSerializerSettings) ?? throw new DataException($"JsonDocument is null."); return(new FlightDetails( new FlightId(Id), versionTag, Capacity, bookings)); }
public async Task UpdateAsync(AggregateRoot <Flight> aggregateRoot) { const string statement = @"UPDATE [Flights] SET [JsonDocument] = @document WHERE [Id] = @id AND [VersionTag] = @versionTag"; var affectedRows = await _sqlConnection.ExecuteAsync(statement, new { document = JsonConvert.SerializeObject(aggregateRoot.Entity, _jsonSerializerSettings), id = aggregateRoot.Entity.Id.Value, versionTag = VersionTagConverter.ToBytes(aggregateRoot.VersionTag), }); if (affectedRows == 0) { throw new DBConcurrencyException(); } }