private static void OnRestore(object?sender, RestoreEventArgs e) { using var db = new BloggingContext(); var articlesElement = e.Root.GetProperty("article"); foreach (var article in articlesElement.EnumerateArray()) { var author = article.GetProperty("author").GetString(); var user = db.Users.FirstOrDefault(u => u.Username == author); if (user == null) { user = new User { Username = author }; db.Users.Add(user); db.SaveChanges(); } var createdArticle = new Article { Title = article.GetProperty("title").GetString(), Body = article.GetProperty("body").GetString(), Timestamp = DateTimeOffset.FromUnixTimeSeconds(article.GetProperty("timestamp").GetInt64()) .UtcDateTime, Author = user }; db.Articles.Add(createdArticle); } db.SaveChanges(); }
protected override async Task <bool> OnDataLossAsync(RestoreContext restoreCtx, CancellationToken cancellationToken) { Log.WriteLine("{0}", $"Partition {GraphEngineStatefulServiceRuntime.Instance.PartitionId} received OnDataLossAsync. Triggering data restore."); RestoreEventArgs rstArgs = new RestoreEventArgs(restoreCtx, cancellationToken); RequestRestore(this, rstArgs); await rstArgs.Wait(); return(true); }
private void OnServiceFabricRequestRestore(object sender, RestoreEventArgs e) { RequestPartitionRestore(sender, e); }