В проекте, над которым я работаю, довольно много данных о поиске, связанных с ним. По этой причине при первом создании экземпляра класса, который это обрабатывает, я установил статические IEnumerable со всеми данными поиска, таким образом:
private static IEnumerable<Kiosk> _kiosks;
private static IEnumerable<Paper> _papers;
private static IEnumerable<NewsAgent> _newsAgents;
И ..
if (_kiosks == null)
_kiosks = db.Kiosks.Where(k => k.Active).OrderBy(k => k.Order).ToList();
if (_papers == null)
_papers = db.Papers.Where(p => p.Active).OrderBy(p => p.Name).ToList();
if (_newsAgents == null)
_newsAgents = db.NewsAgents.Where(n => n.Active).OrderBy(n => n.Order).ToList();
Каждый раз, когда создается экземпляр этого класса, я создаю новые сущности Linq для классов данных, которые мне нужно сохранить, используя совершенно новый DataContext. Когда я пытаюсь отправить эти изменения, я получаю следующую ошибку:
"System.NotSupportedException: 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."
Я понял, что кешированные данные поиска, создаваемые в отдельном DataContext, вызывают эту проблему. Я думаю, что это не имеет значения, поскольку кэшированные данные сохраняются с помощью ToList, хотя, по предположению, каждая сущность внутренне сохраняет, на каком DataContext она была сгенерирована.
Наличие статического DataContext исключено, так как изменения в объектах данных в предыдущем запуске могут быть не отправлены. Вызов Submit во втором запуске datacontext вызывает ошибку, когда исходные объекты не сохраняются.
Как тогда я могу сохранить эти кэшированные данные для использования в новом DataContext?
Я предполагаю, что кэшированные данные поиска были получены из отдельного