求救呀,高手!!!
使用Winform+ .net4.2 + EF4 + Sqlite3(System.data.Sqlite.dll) 开发端运行正常,通过Installer制作发布到客户端后均不能访问,主要是找不到sqlite。
已经尝试网上各种方法:
1、app.config中添加
<system.data> <DbProviderFactories> <remove invariant="System.Data.SQLite"/> <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite, Version=1.0.81.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" /> </DbProviderFactories> </system.data>
2、使用gacutil -i 注册 System.Data.Sqlite.Dll 和 System.data.sqlite.linq.dll
3、在Install项目中添加 System.Data.Sqlite.Dll引用
以上方式均不可行,客户端包括WIN7和XP,均失败。实在无语了,是不是EF4根本不适合sqlite呀?可它明明提供 Sqlite Provider的呀!而且在开发端总是正常的。
错误信息有:
(1)指定的存储区提供程序在配置中找不到,或者无效。。
(2)找不到或无法加载已注册的 .net Framework Data Provider 。。
开发机器运行的是64位操作系统吗?客户端呢?
开发机与客户机均32位系统
@关山月0811: 改为这样试试:
<system.data> <DbProviderFactories> <remove invariant="System.Data.SQLite"/> <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/> </DbProviderFactories> </system.data>
@dudu: 尝试在客户机器安装 System.data.Sqlite.dll 后,使用上面的<DbProviderFactories>后,在客户机可能了。但修改了app.Config后在开发端莫名其妙,又出现EDMX连接的错误“找不到或无法加载已注册的 .Net Framework Data Provider。”:
return dbContext.AdminUser.Count();
@关山月0811: 把System.data.Sqlite.dll复制到bin文件夹中试试