企业类库6.0访问数据库报错

Database provider factory not set for the static DatabaseFactory. Set a provider factory invoking the DatabaseFactory.SetProviderFactory method or by specifying custom mappings by calling the DatabaseFactory.SetDatabases method.

使用企业类库6.0访问数据库和以前版本方法稍有不同,在此记录一下。

企业类库以前版本:

配置文件:

<configSections>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
</configSections>
<dataConfiguration defaultDatabase="SqlConnection" />
<connectionStrings>
<add name="SqlConnection" connectionString="Server=.\sql2008;Database=db;User ID=sa;Password=password" providerName="System.Data.SqlClient" />
</connectionStrings>

6.0版配置文件:

<configSections>
<section name="dataConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" />
</configSections>
<dataConfiguration defaultDatabase="SqlConnection" />
<connectionStrings>
<add name="SqlConnection" connectionString="Database=db;Server=.\sql2008;user id=sa;password=password" providerName="System.Data.SqlClient" />
</connectionStrings>

由此可见,配置文件只有版本号的变化,内容没有变化。

5.0版本使用方法:

private Database db;
public CloudData()
{
db = DatabaseFactory.CreateDatabase("sqlConnection");
}

6.0版本使用方法:

方法一:

private Database db;
public SqlDal()
{
DatabaseProviderFactory factory = new DatabaseProviderFactory();
db = factory.Create("SqlConnection");
}

方法二:

private Database db;

static SqlDal()
{
DatabaseFactory.SetDatabaseProviderFactory(new DatabaseProviderFactory());
}
public SqlDal()
{
db = DatabaseFactory.CreateDatabase("SqlConnection");
}

 

posted @ 2017-07-06 15:21  吹牛不要本钱  阅读(349)  评论(0编辑  收藏  举报