Обновление строки с использованием структуры объекта - PullRequest
0 голосов
/ 18 июля 2011

Я пытаюсь обновить поле в таблице сразу после добавления строки в другую таблицу.(Значение только для того, чтобы показать, что строка была импортирована) Я думал, что использовал правильный код здесь, но поле bool 'Imported' не обновляется.Вот соответствующий код:

using (DbContext db = new DbContext())
{
    db.Details.Add(details);
    db.SaveChanges();
    newID = details.DetailsID;
    AccessRepository rep = new AccessRepository();
    AccessDetails detailUpdate = rep.GetByID(item.AccessDetailsTableID);
    detailUpdate.Imported = true;
    db.SaveChanges();
}

Первый вызов SaveChanges работает, так как я пытаюсь добавить новую строку, но не вторую.Он успешно извлекает данные обратно из хранилища, но просто не обновляет значение.

Есть идеи, почему оно может не работать?

Спасибо

Ответы [ 2 ]

1 голос
/ 18 июля 2011

Я думаю, это потому, что ваш AccessRepository использует другой контекст данных (дБ), чем тот, который находится в области (в опубликованном вами коде)

Вы можете попробовать использовать метод SaveChanges в вашем AccessRepository, который делает то же самое, но в правильном контексте данных.

Однако проблема с вызовом двух сохранений заключается в том, что вы теряете преимущества одной транзакции. Поэтому, если эти два обновления связаны, вам действительно нужно вызвать SaveChanges только один раз.

Я бы создал метод Add и метод Save в вашем AccessRepository, а затем использовал бы что-то вроде этого ...

AccessRepository rep = new AccessRepository();
rep.Add(details);
AccessDetails detailUpdate = rep.GetByID(item.AccessDetailsTableID);
detailUpdate.Imported = true;
rep.Save();//this calls SaveChanges on a single data context

надеюсь, что это поможет

0 голосов
/ 18 июля 2011

Если вы используете newId в методе GetById ()?

using (DbContext db = new DbContext())
{
    db.Details.Add(details);
    db.SaveChanges();
    newID = details.DetailsID;
    AccessRepository rep = new AccessRepository();
    AccessDetails detailUpdate = rep.GetByID(newID);
    detailUpdate.Imported = true;
    db.SaveChanges();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...