EnterpriseClass用法

EnterpriseClass用法

 

一:使用数据访问程序块执行静态SQL语句

该练习示范了如何使用数据访问程序块进行最基本的数据访问,另外还有如何去配制程序块,提供运行时再选择数据库。

第一步

打开SimpleData.sln项目,默认的安装路径应该为C:/Program Files/Microsoft Enterprise Library January 2006/labs/cs/Data Access/exercises/ex01/begin,并编译。

第二步 创建QuickStarts数据库

1.用记事本打开DataAccessQuickStarts.sql,默认的安装路径应该为C:/Program Files/Microsoft Enterprise Library January 2006/QuickStarts/Data,选择 文件 | 另存为 菜单,并选择编码格式encodingUnicode,保存并覆盖原来的文件,如何出现只读属性,请在文件属性中去掉只读属性。

2.在同一个目录下,运行SetUpQuickStartsDB.bat批处理文件,注意数据库将被安装在默认的实例(local)/SQLEXPRESS下,如果需要更改,用记事本打开SetUpQuickStartsDB.bat文件进行修改。

第三步 回顾应用程序

Visual Studio 2005解决方案管理器中选择MainForm.cs文件,选择 View | Designer 菜单,应用程序包含一个DataGrid和几个Menu,我们将使用数据访问应用程序块来统计数据库中的Customer的数量,并加载数据到DataGrid中。

第四步 实现Customer菜单项

1.选中CustomerManagment项目,选择 Project | Add Reference … 菜单命令,在打开的对话框中选择Browse,并添加如下两个程序集。

Microsoft.Practices.EnterpriseLibrary.Common.dll

Microsoft.Practices.EnterpriseLibrary.Data.dll

默认的位置应该是C:/Program Files/Microsoft Enterprise Library January 2006/bin

2.在解决方案管理器中选中MainForm.cs文件,选择View | Code 菜单命令

3.在文件中添加如下命名空间:

using  Microsoft.Practices.EnterpriseLibrary.Data;

4.找到mnuCount_Click方法(窗体中Customer | Count 菜单的单击事件),并添加如下代码。

private   void  mnuCount_Click( object  sender, System.EventArgs e)

{

    
// TODO: Count Customers

    Database db 
= null;

    db 
= DatabaseFactory.CreateDatabase("QuickStarts Instance");

 

    
int count = (int)db.ExecuteScalar(

        CommandType.Text,

        
"SELECT COUNT(*) FROM Customers");

 

    
string message = string.Format(

        
"There are {0} customers in the database",

        count.ToString());

 

    MessageBox.Show(message);

}

在上面的代码中首先声明了一个名为QuickStarts Instance的数据库实例,在配置文件中配置好的,这个时候数据库连接并没有真正的打开。db.ExecuteScalar()方法有很多个重载,选择一个执行静态SQL语句的方法返回的结果类似于SqlCommand .ExecuteScalar()。在该方法中打开并关闭数据库连接。

5.找到mnuLoad_Click方法(窗体中Customer | Load 菜单单击事件),并添加如下代码。

private   void  mnuLoad_Click( object  sender, System.EventArgs e)

{
    
// TODO: Load Customers

    Database db 
= null;

    db 
= DatabaseFactory.CreateDatabase();

    DataSet ds 
= db.ExecuteDataSet(

        CommandType.Text,

        
"SELECT * From Customers");

    dataGrid1.DataSource 
= ds.Tables[0];

}

db.ExecuteDataSet()方法请求打开并关闭数据库连接,它返回一个用SQL语句查询结果填充的DataSet,它可能会包含多张表。

第五步 配置应用程序

1.在项目CustomerManagement中添加一个应用程序配置文件(App.config),单击CustomerManagement项目,选择Project| Add New Item…菜单命令,在弹出的对话框中选择Application configuration file,保留名称为App.config

2.使用Enterprise Library配置工具配置应用程序,可以通过开始菜单打开该配置工具,选择所有程序| Microsoft patterns and practices | Enterprise Library | Enterprise Library Configuration,并打开App.config文件。或者直接在Visual Studio中使用该工具打开配置文件。

3.在解决方案管理器中选中App.config文件,在View菜单或者在右键菜单中选择Open With…,将打开OpenWith对话框,单击Add按钮。

4.在Add Program对话框中,设置Program name指向EntLibConfig.exe文件,默认的路径为C:/Program Files/Microsoft Enterprise Library January 2006/bin,设置Friendly nameEnterprise Library Configuration,单击OK按钮。

Visual Studio会把配置文件(App.config)作为一个命令行参数传递给EntLibConfig.exe

5.在Open With对话框中,选中Enterprise Library Configuration并单击OK按钮。

6.如果在machine.config中已经定义了connectionStrings配置区,你会发现Enterprise Library Configuration工具会自动创建一个数据访问应用程序块。选中Data Access Application Block | Connection Strings节点,并选择菜单Action | New | Connection String命令。

7.如果没有数据访问应用程序块定义,在Application上右击并选择New | Data Access Application Block,即可创建一个新的数据访问应用程序块。

8.选择Data Access Application Block | Connection Strings | Connection String节点,修改Name属性为QuickStarts Instance

这里的名字跟代码中使用的数据库名相对应,它是创建了数据库的别名在运行时映射到具体的数据库。。

9.在QuickStarts Instance下选择Database节点,在右边修改Value属性的值为EntLibQuickStarts

10.相应的,选择Server节点,修改它的值为(local)/SQLEXPRESS,即为你的数据库服务器实例名。

11.选择Data Access Application Block节点,设置DefaultDatabase的值为QuickStarts Instance,如果你在代码中不指定默认的数据库实例名,将会默认的使用它。

12.选择菜单File | Save All保存应用程序的配置,并关闭Enterprise Library Configuration工具。

第六步 运行应用程序

1.在Visual Studio中选择Debug | Start Without Debugging菜单命令运行应用程序,将会弹出App.config在代码编辑器之外被修改的警告对话框,单击Yes。运行应用程序后,单击Customers | Count菜单显示数据库中Customers的数量,单击Customers | Load数据将会填充到DataGrid中。

2.关闭应用程序和Visual Studio

完成后的解决方案代码如C:/Program Files/Microsoft Enterprise Library January 2006/labs/cs/Data Access/exercises/ex01/end所示。

更多Enterprise Library的文章请参考《Enterprise Library系列文章

 

二:使用EnterpriseClass构造数据访问程序块执行存储过程

业务层,详细代码如下:

 

using System;
using System.Data ;
using System.Data.Common;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Common;
using Microsoft.Practices.EnterpriseLibrary.Logging;

namespace AdventureWorksTraderDataAccess
{
    public class ProductCategoryDB
    {
        /// <summary>
        /// 返回数据集
        /// </summary>
        /// <returns>数据集</returns>
        public DataSet GetData()
        {
            try
            {
                DataSet ds = new DataSet();
              //构造数据库,TestConnectionString是用EnterpriseLibarayClassConfig配置的Webconfig
                Database db = DatabaseFactory.CreateDatabase("TestConnectionString");
                //定义存储过程名,不带参数
                string procedureName = "usp_User_GetAllUser";
                //定义DbCommand,DbCommand存在于命名空间System.Data.Common
                DbCommand dbComand = db.GetStoredProcCommand(procedureName);
                //返回数据集
                ds = db.ExecuteDataSet(dbComand);
                return ds;
            }
            catch(Exception ex)
            {
                Log(ex.Message, ex.StackTrace);
                return null ;
            }
        }

        /// <summary>
        /// 根据UserID返回数据集
        /// </summary>
        /// <param name="UserID">用户ID</param>
        /// <returns></returns>
        public DataSet GetData(int UserID)
        {
            DataSet ds = null;
            try
            {
                //用DatabaseFactory工厂创建Database对象
                Database db = DatabaseFactory.CreateDatabase("TestConnectionString");
                //定义存储过程
                string procedureName = "usp_User_GetUserByID";
                //定义存储过程的参数数组
                object[] para = { UserID };
                //创建DbCommand对象
                DbCommand dbCommand = db.GetStoredProcCommand(procedureName, para);
                //执行返回数据集命令
                ds = db.ExecuteDataSet(dbCommand);
                return ds;
            }
            catch (Exception ex)
            {
                Log (ex.Message ,ex.StackTrace );
                return ds;
            }
        }


        /// <summary>
        /// 删除某ID的用户
        /// </summary>
        /// <param name="ID">用户ID</param>
        /// <returns>返回受影响的行数</returns>
        public int DeleteUser(int UserID)
        {
            try
            {
                //通过DatabaseFactory构造DataBase对象
                Database db = DatabaseFactory.CreateDatabase("TestConnectionString");
                //定义存储过程
                string procedureName = "usp_User_DeleteUserByID";
                //定义并赋值参数数组
                object[] para = { UserID };
                //创建DbCommand对象
                DbCommand dbCommand = db.GetStoredProcCommand(procedureName, para);
                //Databse执行删除
                int result = db.ExecuteNonQuery(dbCommand);
                return result;
            }
            catch (Exception ex)
            {
                Log(ex.Message, ex.StackTrace);
                return -1;
            }
        }

        /// <summary>
        /// 插入用户
        /// </summary>
        /// <param name="ob">object数组</param>
        /// <returns>影响的行数</returns>
        public int InsertUser(object[] ob)
        {
            try
            {
               //够找DataBase对象
                Database db = DatabaseFactory.CreateDatabase("TestConnectionString");
                //定义存储过程名
                string procedureName = "usp_User_InsertUser";
                //定义参数数组
                object [] param=ob ;
                //定义DbCommand对象
                DbCommand dbCommand = db.GetStoredProcCommand(procedureName, ob);
                //Database执行插入命令
                int result = db.ExecuteNonQuery(dbCommand);
                return result;
            }
            catch (Exception ex)
            {
                Log(ex.Message, ex.StackTrace);
                return -1;
            }
        }

        /// <summary>
        /// 定义日志等级的结构体
        /// </summary>
        public struct Priority
        {
            public const int Lowest = 0;
            public const int Low = 1;
            public const int Normal = 2;
            public const int High = 3;
            public const int Higer = 4;
        }

        /// <summary>
        /// 定义追踪类别
        /// </summary>
        public struct Category
        {
            public const string General = "General";
            public const string Trace = "Trace";
        }

        /// <summary>
        /// 写入日志
        /// </summary>
        /// <param name="errorMsg">错误信息</param>
        /// <param name="trackTrace">错误追踪</param>
        public static void  Log(string errorMsg,string trackTrace)
        {
            LogEntry log=new LogEntry ();
            log .Message =errorMsg ;
            log.Categories.Add (trackTrace);
            log.Priority = Priority.Normal;
            Logger.Write(log);

        }

        /// <summary>
        /// 返回单精度的值
        /// </summary>
        /// <param name="obValue">输入对象</param>
        /// <returns></returns>
        public void TestGetInt(object obValue)
        {
            try
            {
                int m= Convert.ToInt32(obValue);
            }
            catch (Exception ex)
            {
                using (new Tracer(Category.Trace))
                {
                    Log(ex.Message, ex.StackTrace);
                }
            }
        }

    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Enterprise Library是一个开源的.NET应用程序库,提供了一系列可重用的软件组件和工具,用于简化企业级应用程序的开发。.NET 6可以使用Enterprise Library,只需要将它添加到项目引用中即可使用。 要使用Enterprise Library,您需要进行以下步骤: 1. 下载并安装Enterprise Library。您可以从NuGet或GitHub上下载最新版本的Enterprise Library。 2. 在Visual Studio中打开您的.NET项目,并在“引用”中添加Enterprise Library的程序集。 3. 在代码中引用Enterprise Library的命名空间,并使用其中的类和方法。 例如,您可以使用Enterprise Library中的数据访问组件来连接数据库和执行查询。以下是一个示例代码片段: ```csharp using Microsoft.Practices.EnterpriseLibrary.Data; using System.Data.Common; public class DataAccess { private readonly Database db; public DataAccess() { db = DatabaseFactory.CreateDatabase(); } public DbCommand GetCommand(string sql) { return db.GetSqlStringCommand(sql); } public void ExecuteNonQuery(DbCommand cmd) { db.ExecuteNonQuery(cmd); } public object ExecuteScalar(DbCommand cmd) { return db.ExecuteScalar(cmd); } public DbDataReader ExecuteReader(DbCommand cmd) { return db.ExecuteReader(cmd); } } ``` 在上面的示例中,我们使用Enterprise LibraryDatabase组件来创建数据库连接,并使用它来执行查询和操作。您也可以使用其他的Enterprise Library组件,例如日志记录、缓存、安全等等。 总之,Enterprise Library是一个非常有用的.NET库,可为企业级应用程序开发提供许多便利,您可以在.NET 6项目中使用它来简化开发过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值