使用Data Access Application Block访问数据库

Data Access Application Block

微软企业库中数据访问应用程序块简化了访问数据库的任务。应用程序可以在各种场景使用应用程序块,如读取数据库显示,传递数据到应用程序层,及提交修改后的数据回数据库。

应用程序块包括对存储过程和内联SQL语句的支持。常见的事务管理任务,例如管理连接以及创建和缓存参数,都封装在应用程序块的方法中。换句话说,数据访问应用程序块提供了对简单易用类中ADO.NET最常用特性的访问,并相应地提高了开发人员的生产力。

如何使用Data Access Block?

Data Access Block不是一个ORM解决方案,如果想使用ORM,应该考虑使用EF框架。

使用Data Access Block的步骤

添加Data Access Application Block程序集

使用NuGet安装EnterpriseLibrary.Data,这会添加所有必要的程序集和引用。如果使用SQL CE数据库,则添加EnterpriseLibrary.Data.SqlCe。

配置Block和引用必须的程序集

在配置文件中配置访问的数据库。Data Access Block利用在App.config,Web.Config或其它配置文件中的连接字符串<connectionStrings>来使用相应的数据库;以及Enterprise Library特定的章节来配置Enterprise Library库。下面的XML配置了连接字符串和数据库

<?xml version="1.0"?>
<configuration>
<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="Connection String" />
<connectionStrings>
<add name="Connection String" connectionString="Data Source=JERRY-PC;Initial Catalog=Logging;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings></configuration>

可以使用Enterprise Library Configuration工具来完成这些设置。

创建数据库实例

// Configure the DatabaseFactory to read its configuration from the .config file
DatabaseProviderFactory factory = new DatabaseProviderFactory();
// Create the default Database object from the factory.
// The actual concrete type is determined by the configuration settings.
Database defaultDB = factory.CreateDefault();
// Create a Database object from the factory using the connection string name.
Database namedDB = factory.Create("ExampleDatabase");

使用数据库实例获取数据或执行SQL语句

private void Get()
{
var dbProviderFactory = new DatabaseProviderFactory();
var defaultDb = dbProviderFactory.CreateDefault();
// var defaultDb = dbProviderFactory.Create("ExampleDatabase");
using (var reader = defaultDb.ExecuteReader(CommandType.Text, "select * from log"))
{
DisplayRowValues(reader);
}
}
void DisplayRowValues(IDataReader reader)
{
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i++)
{
Console.WriteLine("{0} = {1}", reader.GetName(i), reader[i].ToString());
}
Console.WriteLine();
}
}


猜你喜欢

转载自blog.51cto.com/13957086/2178100