Автоматически обновлять значение идентификатора для полученных записей - PullRequest
0 голосов
/ 21 сентября 2018

Итак, рассмотрим следующий класс:

public class Solution
{
    [Key]
    public int Id { get; set; }

    public string Name { get; set; }
}

И следующие методы

public void DoSomething()
{
    new Item originalItem = new Item();
    item.Name = "Test";

    InserIntoDb(originalItem);

    Assert.True(item.Id != 0);
}

public void InserIntoDb(Item item)
{
    context.Item.Add(item);
    context.SaveChanges();
}

В этом случае после вставки в БД EF автоматически обновляет originalItem своим автосгенерированное значение идентификатора.

Моя проблема начинается, когда я добавляю логику для добавления в БД, только если Имя не существует.Если существует, вставка не происходит, поэтому свойство ID не заполняется.

Мой вопрос: есть ли способ сделать context.Item (при получении всех) для автоматического обновления идентификатора значения originalItemбез необходимости изменения метода InsertIntoDb для возврата Item и, следовательно, без необходимости добавления строки типа

originalItem = InsertIntoDb(originalItem);

Заранее спасибо

1 Ответ

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

Нет, нет встроенного способа обновить элемент с идентификатором из БД, если он существует.

Вам придется реализовать индивидуальный подход, чтобы сделать эту работу.Если это только небольшое или единственное количество элементов одновременно, то просто попытайтесь получить именованный элемент из базы данных до ввода, а затем для одного или нескольких элементов, отсутствующих, вставьте.

Если вы делаетедля большой партии элементов (более 5000) рассмотрите возможность использования хранимой процедуры для выполнения этой работы на стороне сервера базы данных для повышения производительности запросов.

...