0

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

4

2 回答 2

1

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

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

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

玩得开心!

于 2009-02-26T18:53:26.100 回答
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 然后不关闭它。这是一个很大的禁忌。

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

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

并且不要忘记 DAAB 2.0 上的错误之一。

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

于 2009-02-26T20:03:36.680 回答