Между чем различие Get<T>(object id)
и Load<T>(object id)
? Документация в значительной степени читает то же. Кроме того, если имеет значение, в том, какие случаи я должен использовать один по другому?
Ссылка , предоставленная Брайаном , объясняет ее совершенно ясно. Однако Main Разница заключается в том, что нагрузка
не не ударила базу данных, чтобы проверить и загрузить необходимое предприятие, поскольку она предполагает, что вы знаете, существует. Объект, возвращенный нагрузкой
, - это какой-то прокси, который лениво выбирает реальные данные при необходимости или бросает исключение, если объект не найден.
Рекомендация:
Нагрузка
должна использоваться, когда вы точно знаете, что существует сущность с определенным идентификатором. Вызов не приводит к удару базы данных (и, таким образом, может быть оптимизирован по Nibernate в определенные случаи). Остерегайтесь исключения, которые могут быть подняты при доступе объекта, если экземпляр объекта не существует в БД.
Получить
попадает в кэш базы данных или сеанса для получения данных объекта. Если сущность существует, возвращается, в противном случае будет возвращен NULL
. Это самый безопасный способ определить, существует ли сущность с определенным идентификатором или нет. Если вы не уверены, что использовать, используйте . Get
.
Get вернет ноль, если запрашиваемый объект не существует. Load бросит исключение, если запрашиваемый объект не существует. В противном случае, насколько я могу судить, они работают точно так же.
Get вернет Null, если объект не существует, в то время как Load не вернет Null - он либо возвращает объект, либо бросает исключение.