Мне нужно вставить некоторую запись в базу данных, но она занимает слишком много времени около 20-25 секунд. У меня два метода сначала содержит цикл foreach
с параметром типа списка, а второй метод имеет некоторый запрос Linq для сохранения и удаления некоторой записи. Код приведен ниже.Сохранение базы данных занимает слишком много времени
public void InsertAssignment(List<TIVGroupItem> Item)
{
using (var tr = session.BeginTransaction())
{
try
{
foreach (var item in Item)
{
ak_tIVGroupItemSelector_Insert(item);
}
tr.Commit();
}
catch (Exception ex)
{
tr.Rollback();
CusException cex = new CusException(ex);
cex.Write();
}
}
}
второй метод
public void ak_tIVGroupItemSelector_Insert(TIVGroupItem GroupItem)
{
try
{
var result = (from i in session.Query<TIVGroupItem>()
where i.Id == GroupItem.Id
select i).SingleOrDefault();
if (result != null)
session.Delete(result);
session.Save(GroupItem);
}
catch (Exception ex)
{ CusException cex = new CusException(ex);
cex.Write();
}
}
Список элементов содержит несколько записей. Итак, как я могу улучшить свою производительность с помощью такого типа проблем. Есть ли способ увеличить мою производительность, чтобы сохранить запись в базе данных?
Не запрашивайте каждый элемент отдельно, чтобы его можно было удалить. Вместо этого запросите все элементы, отметьте их все для удаления и затем отправьте всю партию обратно в базу данных. – Servy
Можете ли вы переместить 'session.Query()' в 'InsertAssignment' и передать его как параметр в' ak_tIVGroupItemSelector_Insert'? –
Алессандро Д'Андрия: Я тебя не понял. –