Esempio n. 1
0
        public static void Serialize(ref MessagePackWriter writer, IPocoTracker <T> value,
                                     MessagePackSerializerOptions options)
        {
            var tracker = (TrackablePocoTracker <T>)value;

            writer.WriteArrayHeader(tracker.ChangeMap.Count);
            foreach (var item in tracker.ChangeMap)
            {
                writer.Write(item.Key.Name);
            }

            foreach (var item in tracker.ChangeMap)
            {
                if (item.Value.NewValue == null)
                {
                    writer.WriteNil();
                }
                else
                {
                    var method = SerializeMethodCache.GetSerializeMethod(item.Value.NewValue.GetType());
                    var stream = new MemoryStream(10);
                    method.Invoke(null, new object[] { stream, item.Value.NewValue, options, null });
                    writer.Write(stream.ToArray());
                }
            }
        }
 public Task <int> SaveAsync(DbConnection connection, IPocoTracker <T> tracker, params object[] keyValues)
 {
     return(SaveAsync(connection, (TrackablePocoTracker <T>)tracker, keyValues));
 }
 public Task <UpdateResult> SaveAsync(IMongoCollection <BsonDocument> collection,
                                      IPocoTracker <T> tracker,
                                      params object[] keyValues)
 {
     return(SaveAsync(collection, (TrackablePocoTracker <T>)tracker, keyValues));
 }
Esempio n. 4
0
 public void Serialize(ref MessagePackWriter writer, IPocoTracker <T> value, MessagePackSerializerOptions options)
 {
     TrackablePocoTrackerMessagePackFormatter <T> .Serialize(ref writer, value, options);
 }
Esempio n. 5
0
 public Task SaveAsync(IDatabase db, IPocoTracker <T> tracker, RedisKey key)
 {
     return(SaveAsync(db, (TrackablePocoTracker <T>)tracker, key));
 }