C# NHibernate一般例外
sesion.Getid;有时会产生一般性的DoException: 无法从public.usuario usuario0\u中选择usuario0.us\u id作为us1\u 0\u,usuario0.us\u电子邮件作为us2\u 1\u 0\u,usuario0.us\u合同作为us3\u 1\u 0\u,其中usuario0.us\u id=?] 有人知道问题出在哪里吗?为什么不总是失败 对不起我的英语 ACT1:内部异常:C# NHibernate一般例外,c#,c#-4.0,C#,C# 4.0,sesion.Getid;有时会产生一般性的DoException: 无法从public.usuario usuario0\u中选择usuario0.us\u id作为us1\u 0\u,usuario0.us\u电子邮件作为us2\u 1\u 0\u,usuario0.us\u合同作为us3\u 1\u 0\u,其中usuario0.us\u id=?] 有人知道问题出在哪里吗?为什么不总是失败 对不起我的英语 ACT1:内部异常: [System.NullReferenceException
[System.NullReferenceException]对象引用未设置为对象的实例您可以发布innerException吗 您确定您的连接字符串格式正确吗? 你确定你的数据库已经创建了吗? 是否确定映射文件指向正确的表名? 您确定您的数据库实例正在运行吗? 更新 我还发现: 有时
您的会话是否在线程之间共享?如果是这样的话,那就是死亡。会话不是线程安全的。我在开始实现当前框架时遇到了这个问题。事实上,正如Jason所建议的,您需要将NHibernate会话范围设置为每个请求。这意味着将为每个请求打开一个新会话,并在请求结束时关闭该会话。但是,每次应用程序启动只创建一次会话工厂,因为这是最昂贵的部分 你在使用依赖注入吗?您可以找到关于如何在上实现每请求会话范围界定的好例子 但是,如果您手动执行此操作,则可以在Global.asax Request\u begin中打开NHibernate会话,并确保在Request\u End方法中关闭并释放该会话 与NHIbernate合作的一个好方法是: Castle Windsor依赖注入 存储库模式分离您的数据访问 工作单元模式。您将正确的存储库和工作单元注入到服务中,而不是注入nhibernate会话 服务层业务逻辑—从控制器或应用程序表示层调用的内容
•您确定您的连接字符串格式正确吗?•您确定您的数据库已创建吗?•是否确定映射文件指向正确的表名?有时!=总是xD,它运行了很多次!很明显,连接字符串格式良好,数据库已经创建,…是的!有一个简单的解决方案吗?@Black-Cid:不要在线程之间共享它。它不是线程安全的。您可以尝试每个线程一个会话。