Entity Framework: Ошибка объекта ObjectContext с назначением LINQ to Entities - PullRequest
0 голосов
/ 19 августа 2010

Я получаю следующее InvalidOperationException:

Отношения между двумя объектами не могут быть определены, потому что они прикреплены к разным объектам ObjectContext.

при попытке сделать следующий код:

newCorr.ReqCode = (from req in context.ReqCodeSet
                   where req.Code.Equals(requirement.Code)
                   select req).FirstOrDefault();

Непосредственно перед этой строкой я делаю следующее:

 foreach (Requirement requirement in myInformation.Reqs)
 {
     MyHwReqCorr newCorr = new MyHwReqCorr();

     newCorr.HwItem = Dictionaries.Instance.HwIdHwRecordDictionary[requirement.Id];

Итак, я делаю синтаксический анализ списка Information.Reqs, создаю новый экземпляр MyHwReqCorr, устанавливаю HwItem для элемента, который был ранее сохранен в словаре, и затем устанавливаю ReqCode с помощью команды LINQ to SQL, которая ищет в таблице код req, соответствующий тому, который я передаю. Любая помощь будет принята с благодарностью. Любая информация, которая вам нужна, я с радостью предоставлю.

РЕДАКТИРОВАТЬ: Прямо перед тем, как я вызову этот foreach, я могу вызвать это (как тестирование, чтобы убедиться, что я могу получить доступ к БД):

List<ReqCode> reqCodeList = (from req in context.ReqCodeSet select req).ToList();

И я никогда не получаю никаких ошибок с этим. Но когда я пытаюсь установить элемент в этом списке (используя метод расширения where, например:

newCorr.ReqCode = reqCodeList.Where(t=>t.Code == requirement.Code).FirstOrDefault();

или используя словарь, как и в случае с newCorr.HwItem, я получаю главную ошибку.

EDIT2: Я также заметил кое-что странное: когда я первоначально запускаю, с любой настройкой (мой оригинальный или переменный метод или метод, который опубликовал Рони), это работает. Но любой последующий запуск, то есть, если я перестану отлаживать и снова начну отладку, произойдет сбой с этой ошибкой. Только когда я убиваю все экземпляры Excel (который работает в фоновом режиме, генерируя журнал для последующего просмотра) и жду около 2-3 минут, он снова работает, а затем следует той же ситуации, что и раньше ... Проходя первый раз , терпя неудачу сразу же в последующие времена.

EDIT3: Это определенно не связано с Excel, так как я запретил запуск Excel, и я все еще получаю эту ошибку. Но я заметил, что если я подожду некоторое время и попробую еще раз, это сработает .... иногда.

Ответы [ 2 ]

1 голос
/ 20 августа 2010

Вы получаете все элементы в одной теме / контексте?Попробуйте получить элементы в той же теме.

0 голосов
/ 20 августа 2010
newCorr.ReqCode = (from req in context.ReqCodeSet
                   where req.Code equals requirement.Code
                   select req).FirstOrDefault();

ИЛИ

newCorr.ReqCode = context.ReqCodeSet
                        Where( r => r.Code == requirement.Code)
                        .FirstOrDefault();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...