Приводят ли методы Add DbSet немедленный запрос к базе данных в EF? - PullRequest
0 голосов
/ 04 ноября 2019

Приводят ли методы Add DbSet немедленный запрос к базе данных в EF?

Мне просто любопытно, будут ли Add<TEntity>(TEntity entity), AddRange<TEntity>(IEnumerable<TEntity> entities) и AddRange<TEntity>(params TEntity[] entities) выполнятьзапрос немедленно.

Согласно этой статье они не будут немедленно запрашивать базу данных. Это потому, что в одном из примеров в статье у нас есть следующий фрагмент кода:

context.Authors.Add(author);
context.SaveChanges();

Но я не смог найти подтверждения этому в документации. Итак, кто-то может подтвердить мое предположение, что метод DbSet Add не запрашивает базу данных, пока не будет вызван SaveChanges?

1 Ответ

0 голосов
/ 05 ноября 2019

Нет, это не так. Оператор (ы) INSERT будет выполнен как часть вызова SaveChanges.

Предварительно добавьте, все, что здесь есть, это наши SELECT из ToList() звонка ...

Pre-add

После добавления. ..

On Add

И на SaveChanges ...

Bingo.

Чтобы отслеживать поведение в среде EF, включая время, когда / какие операторы SQL выполняются, я настоятельно рекомендую использовать профилировщик для вашей базы данных, предпочтительно локальную базу данных с небольшим «шумом» от несвязанных запросов. Таким образом, вы можете установить точку останова, в которой у вас есть сомнения, а затем наблюдать за профилировщиком на предмет активности в базе данных. Профилированные базы данных могут раскрыть все возможные потенциальные ошибки производительности и поведения при работе с ORM.

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