public static EventHeader Insert(this IDbConnection conn, EventHeader input) { return conn.GetReader("insert into [EventHeaders] " + "([EventId],[Name],[Value]) values (@p0,@p1,@p2);" + " select [EventId],[Name],[Value] from [EventHeaders] where [EventId]=@p0 and [Name]=@p1;", input.EventId, input.Name, input.Value).Select(x=>x.ToEventHeader()).First(); }
public bool SaveEvents(IEnumerable<object> events) { foreach (var evt in events) { var evtblob = new EventBlob { TypeFullName = evt.GetType().FullName, TypeName = evt.GetType().Name, }; serializer.Serialize(evt, ref evtblob); var headers = new List<EventHeader>(); foreach(var p in evt.GetType().GetProperties().Where(x=>x.Name.EndsWith("Id"))) { var val = p.GetValue(evt,null); if (val==null) continue; var hdr = new EventHeader{ Name = p.Name, Value = val.ToString() }; headers.Add(hdr); } adapter.SaveEvent(evtblob,headers); } return true; }
static EventHeader ToEventHeader(this IDataReader dr) { var bl = new EventHeader(); bl.EventId = dr.GetInt32(0); bl.Name = dr.GetString(1); bl.Value = dr.GetString(2); return bl; }