获取OleDb.OLEDBEException使用F#SQL TypeProvdier查询MSAccess ACCDB

获取OleDb.OLEDBEException使用F#SQL TypeProvdier查询MSAccess ACCDB,f#,oledb,type-providers,F#,Oledb,Type Providers,我正在尝试为fsprojects/SQLProvider类型provider()编写MSAccess的提供程序。类型别名就是这样定义的 type mdb = SqlDataProvider< @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source= C:\\Temp\\BT.accdb", Common.DatabaseProviderTypes.MSACCESS> 但是如果有一个连接 let data = query {

我正在尝试为fsprojects/SQLProvider类型provider()编写MSAccess的提供程序。类型别名就是这样定义的

type mdb = SqlDataProvider< @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source= C:\\Temp\\BT.accdb", Common.DatabaseProviderTypes.MSACCESS>
但是如果有一个连接

    let data = query {
                for epi in mdbctx.``[BT].[Episodes]`` do
                join eu in mdbctx.``[BT].[EpisodeUnits]`` on (epi.ID = eu.EpisodeID)
                where (epi.Urgent = true)
                select epi.LabNumber
                }
OledDb抛出一个错误:

System.Data.OleDb.OleDbException (0x80004005): Could not find file 'C:\Users\BLYNCH\AppData\Local\Temp\BT.mdb'.
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader()
at FSharp.Data.Sql.Runtime.QueryImplementation.executeQuery(String conString, ISqlProvider provider, SqlExp sqlExp, List`1 ti) in C:\code_root\SQLProvider\src\SQLProvider\SqlRuntime.Linq.fs:line 38
at FSharp.Data.Sql.Runtime.QueryImplementation.SqlQueryable`1.System-Collections-Generic-IEnumerable`1-GetEnumerator() in C:\code_root\SQLProvider\src\SQLProvider\SqlRuntime.Linq.fs:line 71
at Microsoft.FSharp.Collections.SeqModule.ToList[T](IEnumerable`1 source)
抱怨MDB文件与连接字符串位于完全不同的位置!如果我将ACCDB的MDB副本放在该位置,那么代码运行时不会出现问题


任何OleDb专家都知道它为什么会出现在那里,以及如何解决问题?

对于我来说,使用Jet OleDb提供程序:“provider=Microsoft.Jet.OleDb.4.0”

System.Data.OleDb.OleDbException (0x80004005): Could not find file 'C:\Users\BLYNCH\AppData\Local\Temp\BT.mdb'.
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
at System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
at System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader()
at FSharp.Data.Sql.Runtime.QueryImplementation.executeQuery(String conString, ISqlProvider provider, SqlExp sqlExp, List`1 ti) in C:\code_root\SQLProvider\src\SQLProvider\SqlRuntime.Linq.fs:line 38
at FSharp.Data.Sql.Runtime.QueryImplementation.SqlQueryable`1.System-Collections-Generic-IEnumerable`1-GetEnumerator() in C:\code_root\SQLProvider\src\SQLProvider\SqlRuntime.Linq.fs:line 71
at Microsoft.FSharp.Collections.SeqModule.ToList[T](IEnumerable`1 source)