Существует нет Detach(object entity)
на DbContext
.
У меня есть возможность отсоединять объекты в коде EF в первую очередь?
Существует нет Detach(object entity)
на DbContext
.
У меня есть возможность отсоединять объекты в коде EF в первую очередь?
Ответы:
Если вы хотите отсоединить существующий объект, следуйте советам @ Slauma. Если вы хотите загружать объекты без отслеживания изменений, используйте:
var data = context.MyEntities.AsNoTracking().Where(...).ToList();
Как упомянуто в комментарии, это не будет полностью отделять сущности. Они все еще прикреплены, и ленивая загрузка работает, но сущности не отслеживаются. Это следует использовать, например, если вы хотите загружать сущность только для чтения данных и не планируете их изменять.
Это вариант:
dbContext.Entry(entity).State = EntityState.Detached;
entity
должен быть материализованный объект типа, который является частью ваших классов моделей (Person, Customer, Order и т. Д.). Вы не можете напрямую передать IQueryable <T> в dbContext.Entry(...)
. Это вопрос, который вы имели в виду?
Detached
. Если вы хотите загрузить объекты из БД, не привязывая их вообще к контексту (без отслеживания изменений), используйте AsNoTracking
.
Detached
.
using(ctx){ return ctx....ToList(); }
. В таких случаях использованиеAsNoTracking()
будет иметь смысл, потому что я бы избавился от ненужного заполнения контекста объекта. Я предполагаю, что это, вероятно, принесет пользу производительности и потреблению памяти, особенно для больших списков, верно?