2010-10-26 1 views
2

У меня есть приложение .NET 4 WinForms, которое использует ADO.NET Entity Framework. Некоторый код, который работал отлично, решил прекратить работать, и хотя я попытался выяснить, что изменилось, что может вызвать это, я в тупике. Этот код выглядит совершенно функционально для меня, и он работает по назначению.ADO.NET Entity Framework SaveChanges не работает

У кого-нибудь есть идеи? Вот код:

using (var pe = new ProposalEstimateEntities()) 
{ 
    var tmc = GetToolingAndMaterialsCost(taskId, Constants.Materials); 

    if (tmc == null) return; 

    tmc.Amount = amount; 
    pe.SaveChanges(); 
} 

Переменная ТМС держит объект сущности ToolingAndMaterialsCost после вызова метода, так что нет никакой необходимости, чтобы добавить объект к контексту. SaveChanges() должен сохранить объект с новой суммой, но это не так. Никакое исключение не выбрасывается. Код исполняется, как будто он немой и счастлив, но ничего не меняется в базе данных, и когда я возвращаюсь к элементу управления, который отображает данные, есть старые данные предварительного редактирования.

Это очень расстраивает, любая помощь будет принята с благодарностью.

Майк

ответ

1

Как был загружен tmc без ссылки на ObjectContext 'pe'? Похоже, вы можете загрузить его из другого контекста?

Если да, это не сработает. Контекст отслеживает объекты, которые изменились. Контекст «pe» не отслеживает сущности по внешнему виду, поскольку он никогда не упоминается, кроме как в вызове SaveChanges.

+0

Правильно, контекст, используемый для загрузки объекта, отличается от контекста, используемого при вызове SaveChanges. Я добавил объект tmc в этот контекст, и он сработал. – flyfisher1952

0

я пошагово ж/отладчик, чтобы убедиться, что TMC не является нулевым. Если tmc действительно объект объекта с полем «Сумма», это должно работать нормально, и проблема, по-видимому, в другом месте. Как бороться с кодом из метода GetToolingAndMaterialsCost?

0

Doh!

В вызове GetToolingAndMaterialsCost используется другой объект ProposalEstimateEntities, отличный от метода, поэтому я просто добавил объект сущности в контекст данных, и он работал нормально. OUtsmarted себя, когда я реорганизовал.

 Смежные вопросы

  • Нет связанных вопросов^_^