Различие между добирается <T> и загрузка <T>

Между чем различие Get<T>(object id) и Load<T>(object id)? Документация в значительной степени читает то же. Кроме того, если имеет значение, в том, какие случаи я должен использовать один по другому?

31
задан Jeroen 15 June 2015 в 06:14
поделиться

3 ответа

Ссылка , предоставленная Брайаном , объясняет ее совершенно ясно. Однако Main Разница заключается в том, что нагрузка не не ударила базу данных, чтобы проверить и загрузить необходимое предприятие, поскольку она предполагает, что вы знаете, существует. Объект, возвращенный нагрузкой , - это какой-то прокси, который лениво выбирает реальные данные при необходимости или бросает исключение, если объект не найден.

Рекомендация:

  • Нагрузка должна использоваться, когда вы точно знаете, что существует сущность с определенным идентификатором. Вызов не приводит к удару базы данных (и, таким образом, может быть оптимизирован по Nibernate в определенные случаи). Остерегайтесь исключения, которые могут быть подняты при доступе объекта, если экземпляр объекта не существует в БД.

  • Получить попадает в кэш базы данных или сеанса для получения данных объекта. Если сущность существует, возвращается, в противном случае будет возвращен NULL . Это самый безопасный способ определить, существует ли сущность с определенным идентификатором или нет. Если вы не уверены, что использовать, используйте . Get .

41
ответ дан 27 November 2019 в 22:17
поделиться

http://ayende.com/Blog/archive/2009/04/30/nhibernate-ndash-the-difference-between-get-load-and-querying-by.aspx

Get вернет ноль, если запрашиваемый объект не существует. Load бросит исключение, если запрашиваемый объект не существует. В противном случае, насколько я могу судить, они работают точно так же.

10
ответ дан 27 November 2019 в 22:17
поделиться

Get вернет Null, если объект не существует, в то время как Load не вернет Null - он либо возвращает объект, либо бросает исключение.

1
ответ дан 27 November 2019 в 22:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: