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(); } }