CompiledQuery
От: fabio Узбекистан  
Дата: 25.02.08 09:19
Оценка:
У нас приложение написано с использованием Linq to SQL но в нем много обращений к базе и большая часть из которых очень сильно похожа.

Наверное слышали про UZTO http://uzto.netdec.uz

Это MDI приложение и для каждого объекта открывается своя форма для редактирования объекта.
У каждой формы свой контекст (DataContext).

Мы решили воспользовать предлагаемой возможностью CompiledQuery!

Но вот проблема при первом выполнение запроса CompiledQuery запоминается контекст, но при последующих выполнениях этого же запроса в другом контексте, он НИЧЕГО не знает о полученных объектах, кажется что он получил результат для старого контекста. По этой причине когда мы пытаемся сохранить объект то он ругается, что объекты из другого контекста и это не поддерживается Linq to SQL.

Текст ошибки:
===================================

An attempt has been made to Attach or Add an entity that is not new, perhaps having been loaded from another DataContext.  This is not supported. (System.Data.Linq)

------------------------------
Program Location:

   at System.Data.Linq.ChangeTracker.StandardChangeTracker.Track(MetaType mt, Object obj, Dictionary`2 visited, Boolean recurse, Int32 level)
   at System.Data.Linq.ChangeTracker.StandardChangeTracker.Track(Object obj, Boolean recurse)
   at System.Data.Linq.ChangeTracker.StandardChangeTracker.Track(Object obj)
   at System.Data.Linq.ChangeProcessor.TrackUntrackedObjects(MetaType type, Object item, Dictionary`2 visited)
   at System.Data.Linq.ChangeProcessor.TrackUntrackedObjects(MetaType type, Object item, Dictionary`2 visited)
   at System.Data.Linq.ChangeProcessor.TrackUntrackedObjects()
   at System.Data.Linq.ChangeProcessor.SubmitChanges(ConflictMode failureMode)
   at System.Data.Linq.DataContext.SubmitChanges(ConflictMode failureMode)
   ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.