По моему опыту, было трудно или невозможно извлечь сущность из контекста, обновить ее, а затем использовать службу для сохранения изменений.Это вызвало у меня головную боль, когда я понял это!
Поскольку ваш поисковый код использует запрос из контекста, все эти объекты должны быть присоединены к контексту, а их состояния отслеживаются.Таким образом, вам необходимо использовать метод контекста для обновления:
foreach (var c in counter) {
string prefix = c.pcx_Prefix.ToString(); ;
string sequence = c.pcx_Sequence.ToString();
c.pcx_Sequence = c.pcx_Sequence + 1;
// Use the Context to save changes
orgContext.UpdateObject(c);
orgContext.SaveChanges();
}
Поскольку большая часть моего кода будет извлекать сущности различными способами (например, Service или Context) в зависимости от ситуации, я разработал простой метод,знает, как правильно обновить сущность.Чтобы расширить ваш пример, у вас может быть метод обновления, который выглядит следующим образом:
public void UpdatePcxEntityCounter(pcx_entitycounter c) {
if (!orgContext.IsAttached(c)) {
service.Update(c);
}
else {
orgContext.UpdateObject(c);
orgContext.SaveChanges();
}
}
Это предполагает, что и orgContext
, и service
доступны в области действия, превышающей область метода.В противном случае они должны были бы быть переданы в качестве дополнительных параметров.