Я в течение некоторого времени гуглил ошибку «Строка не найдена или изменена», и я просто не могу понять, как эта ошибка вызывается в моем приложении.
У меня есть класс фасадов, называемый DataAccess, который оборачивает несколько репозиториев и распространяется вокруг моего приложения. У каждого контроллера есть зависимость от DataAccess, поэтому я подключил его к единице, чтобы пройти по мере необходимости.
Доступ к данным выглядит примерно так, в сокращенном / абстрактном виде:
public class DataAccess : IDataAccess
{
private MyDataContext DataContext = new MyDataContext();
public Repository1 Repo1 = new Repository1();
public Repository2 Repo2 = new Repository2();
public DataAccess()
{
Repo1.DataContext = DataContext;
Repo2.DataContext = DataContext;
}
}
Тогда каждый контроллер имеет зависимость от IDataAccess следующим образом:
public class MyControllerBase
{
[Dependency]
IDataAccess DataAccess { get; set; }
}
Unity передает их в соответствии с обычной конфигурацией, регистрируя типы в Global.asax, подключая контроллеры к заводским настройкам, решая с помощью Unity. Кроме того, я зарегистрировал его с помощью PerThreadLifetimeManager (), который я не уверен, правильно ли это.
В большинстве случаев это прекрасно работает, однако проблему можно воспроизвести:
- Перейти к редактированию действия и опубликовать редактирование (перенаправляет на указатель)
- Вернитесь к действию «Редактировать» и попытайтесь опубликовать другое изменение, ИЛИ, перейдите к действию «Удалить» и попытайтесь опубликовать удаление для того же элемента
Выдает ошибку «Строка не найдена или изменена». Каждое действие (Редактировать и Удалить) вызывает метод SubmitChanges () для DataContext. Так что я не совсем уверен, что здесь происходит. Если у кого-то есть какие-либо идеи, они будут очень хорошо приняты.
Приветствия
Тим.