使用较旧的数据访问应用程序块以及较新的企业库

时间:2009-02-26 18:10:07

标签: .net database enterprise-library

有什么理由我不能使用旧版本的数据访问应用程序块(sqlhelper)和企业库(如果我没有使用它的数据部分?)

2 个答案:

答案 0 :(得分:1)

EnterpriseLibrary分为几个不同的dll,因此您甚至不需要引用您不想要的部分。即使它们被引用,也没有任何东西阻止你混合和匹配。

如果遇到同一个类中引用了多个具有相同名称的类的情况,只需明确命名它们(或通过using语句)以确保获取正确的对象类型。

请记住,对象的完全限定名称包括其命名空间,因此只要包含命名空间,SqlHelper就会与另一个中的SqlHelper不同。

玩得开心!

答案 1 :(得分:0)

我不明白为什么你不能〜技术上做到这一点。 但是你不想转换它似乎很奇怪。

EnterpriseLibarary.Data框架的“清洁度”非常吸引人。

它也是非常“干净”的代码。 例如:

    public override IDataReader CustomersGetSingleWithOrdersReader(string customerId)
    {
        IDataReader returnReader = null;
        try
        {
            Database db = this.GetDatabase(); //encapsulate call to retrieve a database object, very simple routine
            DbCommand dbc = db.GetStoredProcCommand  ("dbo.uspCustomersGetSingleWithOrders);
    db.AddInParameter(dbc, "@CustomerID", System.Data.DbType.String, customerId);
            returnReader = db.ExecuteReader(dbc);
            return returnReader;
        }
        finally
        {
        }
    }

您关注上述代码中的两件事。要调用哪个存储过程。 给它什么参数。 EnterpriseLibrary.Data为您完成剩下的工作。

根据我的经验,EnterpriseLibrary.Data唯一无法保护的东西 你来自(因为它不能在这种情况下)使用IDataReader AND 然后关闭它。 这是一个很大的禁忌。

但如前所述,完全限定的命名空间等可以帮助您解决问题。

不要忘记EnterpriseLibrary.Data框架比原始DAAB更成熟。

不要忘记DAAB 2.0上的一个错误。

http://weblogs.asp.net/rosherove/archive/2003/07/29/10614.aspx