Обычно, если люди задают вопросы о структуре объекта без надлежащих спецификаций, они имеют в виду такие идентификаторы, как _context
a DbContext
объект. Однако System.Data.Entity.DbContext
не имеет функции Add
. Так что я не уверен насчет того, что представляет ваш _context
объект. Может быть, в следующий раз вы дадите правильные характеристики.
К счастью, вы показали нам три функции, которые нам нужны:
- Как получить максимально используемое значение для числа
- Как добавить новый
Data
объект
- Как сохранить изменения.
Следующий код сделает эту работу. Он запросит максимальное количество только один раз и сохранит изменения только один раз. Следовательно, оно более эффективно, чем ваше решение.
// get the current maximum number:
var maxNumber = myDbContext.MyItems.Select(myItem => myItem.Number).Max();
// create objects with a proper value for Number:
var objectsToAdd = Enumerable.Range(1, 10) // from numbers 1..10
.Select(i => new Data() // make a new Data object
{
Number = maxNumber + i, // with value of Number = maxNumber + i
})
.ToList();
// add the created objects and save the changes
foreach (Data objectToAdd in objectsToAdd)
{
_context.Add(objectToAdd
}
// Perhaps there is a _context.AddRange(...)?
_context.SaveChanges();
Обратите внимание, что этот метод работает правильно только в том случае, если никто в то же время не добавляет данные с числом больше maxNumber
. Но у вашего метода есть и этот недостаток: между запросом ваших maxNumber
и SaveChanges
кто-то еще мог бы добавить Data