Simple.Data “No ADO Provider Found”

Whilst trying to get Simple.Data working with a teeeeny tiny app for work, I couldn’t get past Database.OpenConnection(…) ; each time would result in a “No ADO Provider Found” exception, which had me baffled.

Google wasn’t helping much as it just threw up the symbolsource copy of Simple.Data’s MEFHelper.cs – i.e., the exception itself.

With a bit more digging I found this post on the Google Groups board which looked hopeful.

Eventually I found out that I needed to Nuget (if I can use that as a verb) Simple.Data into whichever projects referenced the class library that uses Simple.Data.

Odd. Seems a bit unnecessary, but it works now so I’m not complaining.

8 thoughts on “Simple.Data “No ADO Provider Found”

  1. I hit this problem in my unit tests, google the error and this came up first 🙂 Nice one, thanks for the tip.

  2. Thanks. It’s always nice for the top most Google search to come up with the answer to my question.

  3. I had a similar error but fixed it another way. For me the issue was that all the Simple.Data dlls were not getting copied from my data project to my web project.

    It turns out this is a bug in Visual Studio 2010 and 2012 (

    In your data project, find the references to simple data (I had three–simple data, ado, and sql server). Toggle copy local to false. Save All. Toggle copy local to true. Save all.

    That should fix it (see the SO post for details).

    • Errrr.. actually that didn’t work for me afterall. 🙁

      I’m going with the group here by just adding a ref to on my main project, too, until the numerous MS Connect bugs related to this are addressed.

  4. Thanks for posting this! It saved me some serious grief.

    Still, this is a pretty bad state of affairs. I wanted to write a class library (.dll) that wrapped Simple.Data and used it to call PostgreSQL. It seems the only way to make this work is to include…


    … in my application itself (so, in the project that calls my class library). AND then I need to include at least…


    In the class library itself (I’ll probably need to add the others too, but I already have to have Simple.Data referenced in at least two places just to hit the database). So much for separation of concerns!!

    If anyone else needs to do this, you can do it (as suggested) by running NuGet on EACH of your projects, but NOTE: NuGet repos are not up to date!!

    So, you’ll likely need to Install-Package each of the above assemblies in order to get the latest version (otherwise you’ll get reflection/unknown Type errors).

    If (like me) this bothers you, you can (after getting the latest NuGet versions) copy the .dlls out of their NuGet locations, Uninstall-Package on them, and then reference the .dll’s directly; however, there will be one more surprise waiting for you. You STILL won’t be able to find an ADO provider until you include this in your app.config (again, this is application level, I don’t know of any way to do this within a library):

    So, as far as setup is concerned, it’s anything but “Simple.” Good luck!

    • I guess I may not be able to post XML into the comment, so, look for the config files you get when you use NuGet, you’re looking for something like this:

      assemblyBinding xmlns=”urn:schemas-microsoft-com:asm.v1″
      assemblyIdentity name=”Npgsql” publicKeyToken=”5d8b90d52f46fda7″ culture=”neutral”
      bindingRedirect oldVersion=”″ newVersion=”″

      That information will have to be in the app.config alongside your executable (putting it with your class library will not work).

  5. I solved same problem with adding references from packages

  6. Just wanted to let you know this post is still helping people! It’s a bit rubbish having to do this to fix the problem, but it’s solved it for me. Adam

Leave a Reply

Your email address will not be published. Required fields are marked *