我使用C#,CastleProject ActiveRecord和SQLite作为数据库(使用SQLite连接器)在Visual Studio 2005中编写了一个独立的Windows窗体应用程序。
已发布的应用程序(bin目录中的二进制文件)在Windows Vista和Windows 7计算机上运行良好,但是当复制到Windows XP计算机时,应用程序在运行时会在某处发生错误:
“无法为[tablename] Id:422”执行FindByPrimaryKey
最奇怪的是ID 422确实存在,表和数据库也是如此(并且没有找到任何不一致的地方)。
其他一些细节:
我不知道是什么导致它......任何人都有想法?
更新
好的,发现了问题(仍然非常奇怪,但可能是因为我使用它错了):
在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