带 MS Access 数据库的 PetaPOCO

PetaPOCO with MS Access database

我正在尝试使用 MS Access 数据库测试 PetaPOCO。

web.config

中的连接字符串
<add name="ConString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Data.mdb; Persist Security Info=False" providerName="System.Data.Oledb" />

正在访问 MS Access 数据库-

var db = new PetaPoco.Database("ConString"); //throws exception here
var rows = db.Query<Model>("SELECT * FROM Table");

抛出异常-

"Could not match `System.Data.Oledb` to a provider.Parameter name: providerName"

有什么办法吗?如果是,如何?

我想你真正想要的是这个

using System.Configuration;

var db = new PetaPoco.Database(ConfigurationManager.AppSettings["ConString"]); 

如他们的文档所述"Works with SQL Server, SQL Server CE, SQLite, MySQL, MariaDB, and PostgreSQL. (Oracle supported but does not have integration tests).",它不支持 MS Access

要使用它,您需要编写自己的提供程序。可在 here

中找到提供商样本

从 PetaPoco 版本 5.1.127 或更高版本开始,支持 MS Access,并且不需要自定义数据库提供程序。

示例配置文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <clear />
    <add name="msaccess" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|Databases\MSAccess\petapoco.accdb" providerName="OleDb"/>
  </connectionStrings>
</configuration>

流畅的配置

var builder = DatabaseConfiguration.Build().UsingConnectionName("MyConnection");

var db = builder.Create();

构造函数配置

var db = new Database("MyConnection");