public IEnumerable<object> LoadEvents(object id, long version = 0)
{
const string commandText =
"SELECT EventType, Body FROM EventWrappers WHERE StreamId = @StreamId AND Sequence >= @Sequence ORDER BY TimeStamp;";
var connectionString = ConfigurationManager.ConnectionStrings["main"].ConnectionString;
using(var connection = new SqlConnection(connectionString))
using (var command = new SqlCommand(commandText, connection))
{
command.Parameters.AddWithValue("StreamId", id.ToString());
command.Parameters.AddWithValue("Sequence", version);
connection.Open();
var reader = command.ExecuteReader();
while (reader.Read())
{
var eventTypeString = reader["EventType"].ToString();
var eventType = Type.GetType(eventTypeString);
var body = reader["Body"].ToString();
yield return JsonConvert.DeserializeObject(body, eventType);
}
}
}