Когда вызывать Context.SaveChanges

#c# #entity-framework-4 #data-access

#c# #entity-framework-4 #доступ к данным

Вопрос:

Я использую Entity Framework. Одна из моих сущностей (MyEntity) зависит от «ключа», который я получаю, выполняя хранимую процедуру, которая находится за пределами области действия MyEntity (на самом деле она даже не существует в том же контексте, это вызов отдельной сборки). как только я получаю этот «ключ», я также выполняю некоторые другие действия (по сути, устанавливаю другие свойства MyEntity), затем я вызываю context.SaveChanges(), чтобы сохранить изменения.

Мой вопрос таков… нормально ли вызывать Context.SaveChanges() дважды?Как только у меня будет «ключ» и еще раз после того, как я установлю другие свойства MyEntity? Причина, по которой я спрашиваю, заключается в том, что, как только у меня будет «ключ», я должен связать его с текущим экземпляром MyEntity, с которым я работаю, иначе я получу дубликаты / сироты. И если что-то произойдет, и другие свойства объекта MyEntity не будут сохранены, ну, это не фатальная проблема.

Да, я знаю, в идеале это должно быть сделано за одну транзакцию, но у нас не всегда есть такая роскошь : (

Спасибо!

Ответ №1:

Я не вижу в этом проблемы. Но вам придется не забыть установить myEntity.State = EntityState.Modified после первого сохранения.

Ответ №2:

Игнорируя проблемы с этой системой, которые вы сами отметили, не должно возникнуть проблем с повторным вызовом SaveChanges().