Разница между MergeOption.NoTracking, ObjectContext.Detach, SetChangeTracker (Null) - PullRequest
3 голосов
/ 15 апреля 2011

Привет
Если кто-то мог бы уточнить разницу между тремя, я новичок в EF, и иногда MergeOption.NoTracking работает, тогда как иногда ObjectContext.Detach, но я никогда не понимаю суть этого.
Я хотел бы знать, в каких ситуациях я должен их использовать. Кроме того, если к какому-либо объекту присоединен граф объектов (либо путем запуска функции Include, либо путем вызова EntityReference.Load ()), что следует вызывать, если
1.) я не хочу, чтобы к объекту были прикреплены другие объекты
2.) Я хочу, чтобы все объекты, на которые ссылается объект

Любая помощь будет принята с благодарностью.
Привет
Hiren

1 Ответ

2 голосов
/ 17 апреля 2011

MergeOption.NoTracking используется для улучшения производительности при загрузке объектов, которые не будут изменены. Сущность в этом случае не отслеживается контекстом, но она все еще прикреплена и ленивая загрузка работает .

ObjectContext.Detach полностью удаляет сущность из контекста объекта, поэтому сущность не отслеживается и отложенная загрузка не работает .

IEntityWithChangeTracker.SetChangeTracker Имхо больше похож на инфраструктуру для EntityObject. Он интенсивно используется внутри EF, когда сущности материализуются и привязываются к контексту.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...