c# - 什么是 Microsoft.Practices.EnterpriseLibrary.Data

标签 c# asp.net sql 3-tier three-tier

我想知道什么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 .

最佳答案

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

Microsoft.Practices.EnterpriseLibrary.Data 还指导开发人员使用 DbParameter 作为查询参数,这降低了 SQL 注入(inject)攻击的风险。

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

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

关于c# - 什么是 Microsoft.Practices.EnterpriseLibrary.Data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14413514/

相关文章:

c# - StreamReader 卡在大文件上

c# - 如何在 ReactiveUI 7 中直接调用 ReactiveCommand.Execute() 正确?

c# - 如何对可观察集合进行排序?

c# - 在排队的后台工作项目中保留主体

c# - 如何在运行时在 asp.net 中绑定(bind) radcombobox

javascript - IE9 JavaScript 错误 : SCRIPT5007: Unable to get value of the property 'ui' : object is null or undefined

c# - 在 Xamarin Mac 中阻止鼠标气泡

sql - 显示循环表的结果(oracle、pl/sql)

mysql - 如何使用 mySQL 或 Cassandra 查询获取包含相同值的间隔?

java - 表数据覆盖