public async void CreateOrUpdateNodeInformationAsync(NodeVm nodeInfo) { try { using (MessengerDbContext context = contextFactory.Create()) { Node node = await context.Nodes .Include(opt => opt.DomainNodes) .Include(opt => opt.Ipnodes) .FirstOrDefaultAsync(opt => opt.Id == nodeInfo.Id) .ConfigureAwait(false); if (node == null) { node = NodeConverter.GetNode(nodeInfo); await context.Nodes.AddAsync(node).ConfigureAwait(false); } else { node = NodeConverter.GetNode(node, nodeInfo); context.Nodes.Update(node); } await context.SaveChangesAsync().ConfigureAwait(false); } } catch (Exception ex) { Logger.WriteLog(ex); } }
private async Task HandleEditNodeBlockSegmentAsync(BlockSegmentVm segment) { using (MessengerDbContext _context = CreateContext()) { using (var transaction = await _context.Database.BeginTransactionAsync().ConfigureAwait(false)) { try { EditNodeBlockData blockData = (EditNodeBlockData)segment.PublicData; var editedNode = NodeConverter.GetNode(blockData.Node); if (await _context.Nodes.AnyAsync(node => node.Id == editedNode.Id).ConfigureAwait(false)) { _context.Nodes.Attach(editedNode); _context.Nodes.Update(editedNode); await _context.SaveChangesAsync().ConfigureAwait(false); transaction.Commit(); } } catch (Exception ex) { AddErrorMessage(nameof(HandleEditNodeBlockSegmentAsync), ex.ToString()); transaction.Rollback(); } } } }
public async Task NewOrEditNodeAsync(NodeVm targetNode) { try { using (MessengerDbContext context = contextFactory.Create()) { var node = await context.Nodes.FindAsync(targetNode.Id).ConfigureAwait(false); if (node == null) { node = NodeConverter.GetNode(targetNode); await context.AddAsync(node).ConfigureAwait(false); } else { node = NodeConverter.GetNode(targetNode); context.Update(node); } await context.SaveChangesAsync().ConfigureAwait(false); } } catch (Exception ex) { Logger.WriteLog(ex); } }