为什么Jet OLEDB驱动程序缓存我的MDB文件?

tom*_*ame 8 asp.net ms-access

我有一个使用Access文件的Cassini应用程序.更新的安装程序会覆盖应用程序和数据库.但是,即使在系统重启后,应用程序仍会看到旧数据.(还手动复制MDB文件以确保它已被替换,但它没有帮助.)

应用程序查看新MDB数据的唯一方法是将其安装到新文件夹.

连接字符串是标准的(我认为):

Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + 
    HttpContext.Current.Server.MapPath("App_Data\\" +
    ConfigurationManager.AppSettings.Get("dbfile")) + ";Jet OLEDB:Database Password=xxxx";
Run Code Online (Sandbox Code Playgroud)

知道发生了什么以及如何避免缓存问题?

更新(回答评论中的一些问题):

  • 我们只能在Windows 7上重现此问题.
  • Cassini应用程序永远不会更新MDB.我们创建数据库并将其发送给用户. - 我们确保安装程序成功替换了该文件.实际上,如果我们手动更换它会发生同样的事情.
  • Windows重新启动后问题仍然存在.

小智 0

将连接对象的缓存授权属性设置为 false,默认情况下为 true。

http://msdn.microsoft.com/en-us/library/aa140022(v=office.10).aspx