EF4 и нежелательная загрузка связанной коллекции с помощью AddObject

У меня есть странный случай, когда добавление записи вызывает нежелательную загрузку связанной коллекции.

Например, у меня есть запросы и сеансы. Сессия может содержать много запросов. Я уже загрузил сеанс и просто хочу добавить новый запрос.

Однако, когда я устанавливаю call AddObject в ObjectSet репозитория Request, SQL Profiler показывает, что запрос выбора выполняется для всех связанных запросов в этом сеансе.

Вот код проблемы:

this._request = new Request
                    {
                        Action = (string)filterContext.RouteData.Values["action"],
                        Controller = filterContext.Controller.GetType().Name,
                        DateAdded = userContext.Session.DateLastActive,
                        IpAddress = filterContext.HttpContext.Request.UserHostAddress,
                        SessionId = userContext.Session.Id
                    };

loggingService.AddRequest(this._request);

Эта последняя строка просто вызывает мою службу, которая, в свою очередь, просто вызывает _objectSet. AddObject (entity) .

То же самое произойдет, если я попытаюсь установить новый запрос Session = userContext.Session (вместо SessionId = userContext.Session.Id ) - запрос будет выполняться при установке этого свойства, а не AddObject. Похоже, что EF4 считает, что ему нужна связанная коллекция запросов в сеансе, когда на нее по какой-то причине ссылаются.

Но мне не нужны связанные запросы в сеансе, и они не используются или не упоминаются. Так что я не уверен, зачем их загружает EF4. Я прошел через код и убедился, что это происходит именно в строке AddObject (entity) (Profiler показывает, что запрос выполняется в том же экземпляре).

Почему это произошло и как я могу остановить это?

Заранее спасибо.

РЕДАКТИРОВАТЬ: Это потому, что EF4 пытается добавить новый запрос в связанную коллекцию Session.Requests, а также получает и извлекает все остальные? Если да, то есть ли способ предотвратить это? Как я уже сказал, мне не нужны эти запросы, мне просто нужно добавить их и двигаться дальше.

6
задан Jerad Rose 2 May 2011 в 06:32
поделиться