anchor.diff:  open FSharp.Data.Sql
   open FSharp.Data.Sql.Common
   open FSharp.Data.Sql.Schema
  +open System.Collections.Concurrent
   
   module internal ProviderBuilder =
       open FSharp.Data.Sql.Providers
  
positive.code: 
  type public SqlDataContext (typeName,connectionString:string,providerType,resolutionPath, referencedAssemblies, runtimeAssembly, owner, caseSensitivity) =
      let pendingChanges = System.Collections.Concurrent.ConcurrentDictionary<SqlEntity, DateTime>()
      static let providerCache = Dictionary<string,ISqlProvider>()
      let myLock1 = new Object();
      let myLock2 = new Object();
  
      let provider =
          lock myLock1 (fun () ->
              match providerCache .TryGetValue typeName with
              | true, prov -> prov
              | _ ->
                  let prov = ProviderBuilder.createProvider providerType resolutionPath referencedAssemblies runtimeAssembly owner
                  use con = prov.CreateConnection(connectionString)
                  con.Open()
  
negative.code:                 prov.CreateTypeMappings(con)
                  prov.GetTables(con,caseSensitivity) |> ignore
                  if (providerType.GetType() <> typeof<Providers.MSAccessProvider>) then con.Close()
                  prov)
  
      interface ISqlDataContext with
  