public override List <Event> GetAll(params Type[] eventTypes) { List <Event> events = new List <Event>(); using (SqlConnection connection = new SqlConnection(_connectionString)) { connection.Open(); string types = string.Join(",", eventTypes.Select(e => $"'{e.Name}'")); string query = $"SELECT * FROM {_tableName} WHERE [Type] IN ({types}) ORDER BY [Id], [Order] ASC;"; using (SqlCommand command = new SqlCommand(query, connection)) { using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { SqlEvent sqlEvent = new SqlEvent(); sqlEvent.Id = new Guid(reader["Id"].ToString()); sqlEvent.AggregateId = new Guid(reader["AggregateId"].ToString()); sqlEvent.Order = int.Parse(reader["Order"].ToString()); sqlEvent.EventType = reader["Type"].ToString(); sqlEvent.Data = reader["Data"].ToString(); Event @event = ToEvent(sqlEvent); events.Add(@event); } } } } return(events); }
public override List <Event> Get(Guid aggregateId) { List <Event> events = new List <Event>(); using (SqlConnection connection = new SqlConnection(_connectionString)) { connection.Open(); string query = $"SELECT * FROM {_tableName} WHERE [AggregateId] = @aggregateId ORDER BY [Order] ASC"; using (SqlCommand command = new SqlCommand(query, connection)) { command.Parameters.Add(new SqlParameter("aggregateId", aggregateId) { SqlDbType = SqlDbType.UniqueIdentifier }); using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { SqlEvent sqlEvent = new SqlEvent(); sqlEvent.Id = new Guid(reader["Id"].ToString()); sqlEvent.AggregateId = new Guid(reader["AggregateId"].ToString()); sqlEvent.Order = int.Parse(reader["Order"].ToString()); sqlEvent.EventType = reader["Type"].ToString(); sqlEvent.Data = reader["Data"].ToString(); Event @event = ToEvent(sqlEvent); events.Add(@event); } } } } return(events); }