Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NHibernate一般例外_C#_C# 4.0 - Fatal编程技术网

C# NHibernate一般例外

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

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]对象引用未设置为对象的实例

您可以发布innerException吗

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

我还发现:

有时


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

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

你在使用依赖注入吗?您可以找到关于如何在上实现每请求会话范围界定的好例子

但是,如果您手动执行此操作,则可以在Global.asax Request\u begin中打开NHibernate会话,并确保在Request\u End方法中关闭并释放该会话

与NHIbernate合作的一个好方法是:

Castle Windsor依赖注入 存储库模式分离您的数据访问 工作单元模式。您将正确的存储库和工作单元注入到服务中,而不是注入nhibernate会话 服务层业务逻辑—从控制器或应用程序表示层调用的内容
•您确定您的连接字符串格式正确吗?•您确定您的数据库已创建吗?•是否确定映射文件指向正确的表名?有时!=总是xD,它运行了很多次!很明显,连接字符串格式良好,数据库已经创建,…是的!有一个简单的解决方案吗?@Black-Cid:不要在线程之间共享它。它不是线程安全的。您可以尝试每个线程一个会话。