Есть ли существенная разница между .Find(id)
и .Where(x = >x.Id == id)
, что должно заставить меня использовать .Find()
по сравнению с .Where()/.First()
?Entity Framework Найти vs. Где
Я бы предположил, что .Find()
будет более эффективным, но настолько ли он эффективнее, что я должен избегать .Where()/.First()
?
Причина, по которой я прошу, состоит в том, что я использую общий набор FakeDbSet в своих тестах, чтобы упростить реализацию поддельных результатов, и до сих пор я обнаружил, что должен наследовать этот класс и предоставить пользовательскую реализацию .Find()
, тогда как если я напишу мой код с .Where()/.First()
Мне не нужно делать эту дополнительную работу.
Ну, вам, вероятно, будет лучше сравнивать «Найти» и «SingleOrDefault», так как 'Where' возвращает коллекции. –
Правда, хотя я всегда использую .First или .FirstOrDefault. –
@JimmyBosse, вы можете рассмотреть возможность использования Single для любых ситуаций, когда должно соответствовать только одна запись. – Kyle