예제 #1
0
 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);
 }
예제 #2
0
 public static EventBlob Insert(this IDbConnection conn, EventBlob input)
 {
     return(conn.GetReader("insert into [EventBlobs] " +
                           "([SerializedData],[SerializationProtocol],[TypeName],[TypeFullName]) values (@p0,@p1,@p2,@p3);" +
                           " select [Id],[SerializedData],[SerializationProtocol],[TypeName],[TypeFullName]" +
                           " from [EventBlobs] where [Id] = SCOPE_IDENTITY();",
                           input.SerializedData, input.SerializationProtocol, input.TypeName, input.TypeFullName).Select(x => x.ToEventBlob()).First());
 }
예제 #3
0
        static EventBlob ToEventBlob(this IDataReader dr)
        {
            var bl = new EventBlob();

            bl.Id                    = dr.GetInt32(0);
            bl.SerializedData        = dr.GetString(1);
            bl.SerializationProtocol = dr.GetString(2);
            bl.TypeName              = dr.GetString(3);
            bl.TypeFullName          = dr.GetString(4);
            return(bl);
        }
예제 #4
0
        public bool SaveEvent(EventBlob blob, IEnumerable <EventHeader> Headers)
        {
            var res = conn.Insert(blob);

            foreach (var h in Headers)
            {
                h.EventId = res.Id;
                conn.Insert(h);
            }
            return(true);
        }
예제 #5
0
        public void Add(Event ev)
        {
            var blob = new EventBlob(ev);

            database.Insert(blob);
            if (NewEvent != null)
            {
                NewEvent(this, new NewEventEventArgs {
                    Event = ev,
                    Blob  = blob
                });
            }
        }
예제 #6
0
 public bool SaveEvent(EventBlob blob, IEnumerable <EventHeader> headers)
 {
     lock (lockobj)
     {
         blob.Id = Blobs.Count + 1;
         Blobs.Add(blob);
         foreach (var h in headers)
         {
             h.EventId = blob.Id;
             Headers.Add(h);
         }
     }
     return(true);
 }