NHibernate GenericADOException

本文关键字:GenericADOException NHibernate | 更新日期: 2023-09-27 18:01:41

sesion。Get(id(;有时会生成GenericADOException:

无法加载实体:[PFC_Servidor.Entidades.Usumario#10][SQL:SELECT usuario0.us_id为us1_1_0_,usuario0.us_email为us2_1_0_、usuario0-us_contrasena为us3_1_0_ FROM public.Usuario Usuario_ WHERE Usuario_.us_id=?]

知道问题出在哪里吗?为什么不总是失败?

PD:对不起我的英语。

ACT1:内部异常:[System.NullReferenceException]"对象引用未设置为对象的实例">

NHibernate GenericADOException

有时

您的会话是否在线程之间共享?如果是,那就是死亡。会话不是线程安全的。

你能发布innerException吗?

  • 你确定你的连接字符串格式正确吗
  • 你确定你的数据库已经创建了吗
  • 您确定映射文件指向正确的表名吗
  • 你确定你的数据库实例正在运行吗

更新

我还发现了这个:

当表是现有时无法加载实体

我在开始实现当前框架时遇到了这个问题。事实上,正如Jason所建议的那样——您需要将NHibernate会话范围设置为每个请求。这意味着将为每个请求打开一个新会话,并在请求结束时关闭。但是,每次应用程序启动只创建一次会话工厂,因为这是最昂贵的部分。

您是否使用任何依赖项注入?您可以在Windsor Castle NHibernate设施上找到如何实现按请求会话范围界定的好例子。

但是,如果您是手动执行,则可以在Global.asax Request_begin中打开NHibernate会话,并确保它已关闭并在Request_End方法中处理。

使用NHIbernate的一种巧妙方法是:

  • Castle Windsor(依赖性注入(
  • 存储库模式(分离数据访问(
  • 工作模式单元。不是注入nhibernate会话,而是将正确的存储库和工作单元注入到服务中
  • 服务层(业务逻辑(-您从控制器或应用程序表示层调用的内容
相关文章:
  • 没有找到相关文章