Начинающий программист использовал этот dbContext.SaveChanges() не менее чем 93 (!!!) раза, что вызвало многочисленные проблемы с моим приложением (соответствующее событие должно запускаться один или два раза, а не 93 раза).
Я уже пробовал удалить dbContext. SaveChanges(), но поскольку изменения в базе данных действительно необходимы, это приводит к серьезному сбою в программе.
Поэтому возникает, возможно, странный вопрос: есть ли еще один фрагмент код, чем dbContext.SaveChanges(), который сохраняет изменения в базе данных, на которые ссылается dbContext?
Если такой вещи не существует, я также мог бы согласиться к такому решению, как:
Код: Выделить всё
var events = dbContext.getEvents();
dbContext.RemoveEvents();
dbContext.SaveChanges();
dbContext.AddEvents(events);
Код: Выделить всё
private readonly IUnityContainer _unityContainer;
using (var dbContext = _unityContainer.Resolve())
{
... // all DB-related actions happen inside such a using-clause.
}
Код: Выделить всё
//
// Summary:
// Interface defining the behaviour of
// the Unity dependency injection container.
public interface IUnityContainer : IDisposable
Код: Выделить всё
using (var anotherDbContext =
_unityContainer.Resolve_another())
{
... // I can also make DB modifications, but without those events.
}
Я только что нашел метод Telerik OpenAccess CreateDetachedCopy (), и я предполагаю, что это работает следующим образом:
Код: Выделить всё
var obj = dbContext.CreateDetachedCopy(o => o.id==known_id);
obj.ChangeSomething();
dbContext.SaveChanges(); // the modifications in obj are
// not taking into account.
Код: Выделить всё
var obj2 = dbContext.GetData(o => o.id == obj.id).FirstOrDefault();
obj2.CloneInformationFromObject(obj);
// just a clear name, I have no idea how to do this.
dbContext.SaveChanges();
Осторожно:
Мой dbContext — это всего лишь интерфейс к Telerik OpenAccess dbContext, и этот интерфейс не содержит метода AttachCopy(), поэтому я не могу его использовать.
Подробнее здесь: https://stackoverflow.com/questions/785 ... thing-else
Мобильная версия