什么是 Microsoft.Practices.EnterpriseLibrary.Data

Posted

技术标签:

【中文标题】什么是 Microsoft.Practices.EnterpriseLibrary.Data【英文标题】:what is Microsoft.Practices.EnterpriseLibrary.Data 【发布时间】:2013-01-03 00:35:29 【问题描述】:

我想知道Microsoft.Practices.EnterpriseLibrary.Data.dll 是什么以及我们为什么使用这个程序集。

这个dll有什么好处?

我想在 3 层架构上创建一个项目,并且很好奇什么是执行 sql 查询的最佳方式。

我应该使用这个 dll 还是选择简单的 SqlCommandDataAdapter。 目前我正在以这种方式工作: (DAL 文件中的代码:)

public void Insert(long id)

    connection.Open();
    SqlCommand dCmd = new SqlCommand("test_procedure", connection);
    dCmd.CommandType = CommandType.StoredProcedure;
    try
    
        dCmd.Parameters.AddWithValue("@id", id);           
        dCmd.ExecuteNonQuery();
    
    catch
    
        throw;
    
    finally
    
        dCmd.Dispose();
        connection.Close();
        connection.Dispose();
    

我很困惑我是否以正确的方式工作,或者是否应该更好地使用Microsoft.Practices.EnterpriseLibrary.Data 并使用DatabaseFactory

【问题讨论】:

我去过你所在的地方,所以我很同情。我不知道使用 SqlCommand 和 SqlConnection 对象有什么问题。企业库之类的东西是更高级别的包装器,它为您提供编写代码的方法,这些代码可以配置为与更广泛的数据库(不仅仅是 SQL Server)一起工作。但是,如果你只是在学习,我会说坚持你所拥有的。 实体框架是微软当前的 ORM de jour @AaronAnodide:我知道没有任何问题,但我想知道“Microsoft.Practices.EnterpriseLibrary.Data”有什么区别以及真正的好处是什么 【参考方案1】:

Microsoft.Practices.EnterpriseLibrary.Data 库的主要优势在于它可以更轻松地生成与数据库无关的代码。开发人员主要与更通用的 Database vs SqlConnection 和 DbCommand vs SqlCommand 对象进行交互,理论上将底层数据库从 MSSQL 切换到 Oracle 的机制变得更加容易。尽管在我的开发经验中我从未见过这种情况发生。

Microsoft.Practices.EnterpriseLibrary.Data 还指导开发人员将 DbParameter 用于查询参数,从而降低 SQL 注入攻击的风险。

Microsoft.Practices.EnterpriseLibrary.Data 是核心 ADO .Net 结构的更高抽象,使开发人员能够以最少的代码量完成相同的任务。

如果您学习数据访问策略,我建议您继续使用 ADO .Net,您对基础知识的了解越多,Microsoft.Practices.EnterpriseLibrary.Data 或实体框架或 NHibernate 就越有用,因为您了解这些基础知识,因为这些技术已经构建在 ADO .Net 之上。

【讨论】:

以上是关于什么是 Microsoft.Practices.EnterpriseLibrary.Data的主要内容,如果未能解决你的问题,请参考以下文章

时间是什么?时间同步是什么?GPS北斗卫星授时又是什么?

什么是拉电流,什么是灌电流?什么是吸收电流 ?

在java中,OOA是什么?OOD是什么?OOP是什么?

什么是DIV,全称是什么?

什么是抢占/什么是可抢占内核?到底有什么好处呢?

什么是 JNDI?它的基本用途是什么?什么时候使用?