async Task IStorageProvider.WriteStateAsync(Type grainType, GrainReference grainReference, GrainState grainState)
        {
            if (_ignore)
                return;

            var grainIdentity = GrainIdentity.FromGrainReference(grainType.FullName, grainReference);
            await _dataManager.UpsertStateAsync(grainIdentity, grainState.AsDictionary());
        }
 /// <summary>
 /// Serializes from a grain instance to a JSON document.
 /// </summary>
 /// <param name="grainState">Grain state to be converted into JSON storage format.</param>
 /// <remarks>
 /// See:
 /// http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx
 /// for more on the JSON serializer.
 /// </remarks>
 protected static string ConvertToStorageFormat(GrainState grainState)
 {
     IDictionary<string, object> dataValues = grainState.AsDictionary();
     JavaScriptSerializer serializer = new JavaScriptSerializer();
     return serializer.Serialize(dataValues);
 }
        public virtual Task WriteStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
        {
            Log.Info(0, "WriteStateAsync for {0} {1}", grainType, grainReference);
            Interlocked.Increment(ref writeCount);
            lock (StateStore)
            {
                var storedState = grainState.AsDictionary(); // Store current state data
                StateStore.WriteRow(MakeGrainStateKeys(grainType, grainReference), storedState, grainState.Etag);

                LastId = GetId(grainReference);
                LastState = storedState;
            }
            return TaskDone.Done;
        }