UPSERT с ядром Entity Framework - PullRequest
       10

UPSERT с ядром Entity Framework

0 голосов
/ 24 сентября 2018

Необходимо обновить или вставить в параллельный сценарий и гоночные условия, используя EF Core.Единственный способ, который работал, это использовать блоки try try.Больше ничего не получалось.Я знаю, что могу сделать SP, но я хочу только EF ...

Это рабочий код, ничего не сломано, только немного беспорядка ...

                        var _be = new Models.BackgroundEntry()
                        {
                            Id = id,
                            Datetime = Int64.Parse(first_action.Value<String>("datetime")),
                            Part = part,
                            Domain = host,
                            Session = Guid.Parse(req.session_id),
                            Action = action.ToString(),
                            Location = req.location
                        };

                        context.BackgroundEntry.Add(_be);

                        try
                        {
                            await context.SaveChangesAsync();
                        }
                        catch
                        {
                            context.BackgroundEntry.Remove(_be);

                            _be = await context.BackgroundEntry.FindAsync(id, sessionGuid);

                            if (_be.Part.Length < part.Length)
                            {
                                _be.Part = part;
                                context.Update(_be);
                                await context.SaveChangesAsync();
                            }
                        }
...