CastleProject ActiveRecord和SQLite XP唯一的问题

时间:2010-09-13 17:21:51

标签: c# sqlite windows-xp castle-activerecord

我使用C#,CastleProject ActiveRecord和SQLite作为数据库(使用SQLite连接器)在Visual Studio 2005中编写了一个独立的Windows窗体应用程序。

已发布的应用程序(bin目录中的二进制文件)在Windows Vista和Windows 7计算机上运行良好,但是当复制到Windows XP计算机时,应用程序在运行时会在某处发生错误:

“无法为[tablename] Id:422”执行FindByPrimaryKey

最奇怪的是ID 422确实存在,表和数据库也是如此(并且没有找到任何不一致的地方)。

其他一些细节:

  • windows xp sp3系统安装了所有库/框架
  • 应用程序在xp机器上正常启动
  • 如果应用程序在XP机器上的visual studio中运行,程序运行正常,没有任何问题。但是在visual studio之外运行它(相同的二进制文件)会再次出错。
  • Vista& W7
  • 我使用的是最新的SQLite连接器(http://sourceforge.net/projects/sqlite-dotnet2/
  • 当我将SQLite数据库文件从XP机器复制到Vista或W7时,这些系统上的应用程序会毫无问题地读取它
  • 错误调用
  • 之前发生的所有其他数据库操作均未显示错误
  • 将FindByPrimaryKey更改为FindAll将导致类似错误

我不知道是什么导致它......任何人都有想法?

更新

好的,发现了问题(仍然非常奇怪,但可能是因为我使用它错了):

在app.config中,在定义数据库位置的行:

<add key="hibernate.connection.connection_string" value="Data Source=database.db;Version=3"/>

在XP上,路径(在数据源中)相对于任何其他文件操作路径,而在Windows Vista或Windows 7上,它始终相对于主可执行文件的路径。

所以..不同的问题,但同样的问题:

如何定义数据库路径以使其始终指向同一位置? (例如:与可执行文件相同的目录,以及没有绝对路径的目录)

更新2

好的,从官方的castleproject文档中得到它:

http://www.castleproject.org/activerecord/documentation/v1rc1/usersguide/configref.html#configuring

0 个答案:

没有答案