前几天看了不少的关于 NHibernate / ORM 的文章,但是结果还是觉得糊里糊涂,对 NHibernate 的使用还是不太了解,经过寻思后,觉得是由于自己没有切实地体验 NHibernate 是怎么工作的, 于是决定看一看 NHibernate 自带的 Examples,打开后看了几眼,便决定要编译一下看看运行结果如何,可是我居然遇到问题了,编译竟然不通过,老是报错 "... NHibernate.snk 文件不存在或无法访问"。我在项目中搜索了 “NHibernate.snk”,发现一个配置文件里边果然有一行写着 <property value="..\NHibernate.snk" name="keyFile"></property>,于是搜索了整个 NHibernate 文件夹,结果没有发现这一文件。于是我只好向 Baidu 和 Google 求助了,搜索关键字“NHibernate.snk”,发现果然有不少人和我一样遇到这个问题了,同时我也找到了答案,原来这个 snk 文件是要自己用 VS.NET 的 sn 工具生成的。在 NHibernate 的官方论坛里我看到了这么一条指令 sn -k NHibernate.snk ,我猜这就是用来生成 NHibernate.snk 文件的吧,于是打开 cmd 输入上边的指令,果然在运行目录下生成了这个文件,将它复制到NHibernate目录的 src 目录和 src/NHibernate/obj 目录下,然后编译,耶!成功了!蛙蝦蝦。。。

  不过呢,好事多磨,我的学习过程似乎总是一路坎坷,问题是一个解决完一个又出现。我将 NHibernate.Examples-1.1 项目的输出类型转换成控制台程序,并在其中新建了一个 Examples 类,在其中测试 UserFixture 等类。代码如下:

昨晚终于成功编译了 NHibernate 的 Examples, 不过马上又遇到新问题 ...using System;
昨晚终于成功编译了 NHibernate 的 Examples, 不过马上又遇到新问题 ...
using NHibernate.Examples.QuickStart;
昨晚终于成功编译了 NHibernate 的 Examples, 不过马上又遇到新问题 ...
昨晚终于成功编译了 NHibernate 的 Examples, 不过马上又遇到新问题 ...
namespace NHibernate.Examples
}

编译后运行发现,第一次运行是ok的,再运行一次就出错了。报错如下:could not synchronize database state with session,我想应该是因为 LoginId 是个主键的原因吧,但是这种错误该怎么避免呢,用 try-catch 吗?那么怎么才能知道出错的原因是主键冲突呢?我看上边的报错信息似乎不是这个意思啊。

相关文章:

  • 2022-12-23
  • 2022-01-14
  • 2021-09-21
  • 2021-06-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-03-06
  • 2022-12-23
  • 2022-01-01
  • 2022-02-17
  • 2022-12-23
相关资源
相似解决方案