private void InsertData(List <MessageEntity> messages, SqlApplicationDbContext context) { foreach (var message in messages) { context.Users.Add(message.User); message.PostDate = message.PostDate?.ToUniversalTime(); context.Messages.Add(message); foreach (var tag in message.HashTags) { var tagToLink = context.Hashtags.FirstOrDefault(x => x.HashTag == tag.HashTag) ?? tag; var tag2Message = new MessageHashTagRelationsEntity { HashTagEntity = tagToLink, MessageEntity = message }; context.TaggedMessages.Add(tag2Message); if (tagToLink.IsNew) { context.Hashtags.Add(tagToLink); } } } }
public async Task <CommandResult> Handle(CreateMessageCommand command) { var mapper = new MessageCommandToEntityMapper(); var message = mapper.MapSingle(command); if (!context.Messages.Any(z => z.NetworkId == message.NetworkId && z.User.NetworkId == message.User.NetworkId)) { if (!context.Users.Any(x => x.NetworkId == message.User.NetworkId)) { context.Users.Add(message.User); await context.SaveChangesAsync(); } message.User = await context.Users.FirstOrDefaultAsync(x => x.NetworkId == message.User.NetworkId); message.PostDate = message.PostDate?.ToUniversalTime(); context.Messages.Add(message); foreach (var tag in message.HashTags) { var tagToLink = await context.Hashtags.FirstOrDefaultAsync(x => x.HashTag == tag.HashTag); if (tagToLink != null) { var tag2Message = new MessageHashTagRelationsEntity { HashTagEntity = tagToLink, MessageEntity = message }; context.TaggedMessages.Add(tag2Message); } } await context.SaveChangesAsync(); } return(new CommandResult { Success = true }); }