【问题标题】:Looking for a .NET data access layer寻找 .NET 数据访问层
【发布时间】:2011-02-04 14:51:13
【问题描述】:

我正在寻找 ado.net 的数据访问层。我对 linq、EF、NHibernate 或任何其他 ORM 不感兴趣。目前,我正在使用 umbraco 的数据访问层。 DAL 非常好,但他们停止开发它,所以我正在寻找不同的。有谁知道我在哪里可以找到我可以测试的 DAL 列表?

【问题讨论】:

    标签: c# sql-server-2008 data-access-layer


    【解决方案1】:

    如果你想要一个 DAL,而不是 ORM,为什么不直接使用 ADO.NET?

    没有真正的理由在 ADO.NET 之上添加额外的层,除非您希望通过使用 ORM 获得灵活性和易于开发...

    【讨论】:

    • ... 或者,如果您希望实现 ADO.NET 接口的数据库之间的未来更改抽象。 +1 准确说明我在阅读问题后的想法。
    • 我不想直接使用ado.net的原因是我必须手动关闭所有资源。使用 umbraco DAL,连接和数据读取器会自动关闭
    • 执行阅读器时只需在 DAL 中调用 CommandBehavior.CloseConnection
    【解决方案2】:

    我知道您说过您不想使用 LINQ to SQL,因为它是 ORM,但您不必像 ORM 那样使用它。您还可以通过ExecuteQuery 执行原始 SQL,并让它自动为您将结果填充到对象的属性中。您可以将结果对象的所需类型指定为类型参数。它不是成熟的 ORM - 它让您可以控制发送的 SQL,但它省去了迭代数据读取器的麻烦。

    【讨论】:

    • 哇..好主意..executequery命令的性能如何
    • 根据我的经验,它很快。我通常只在自动生成的 LINQ to SQL 查询太慢时才使用它作为后备。不过我手头没有任何基准数据。
    • 不过,这仍在使用 ORM。大多数 ORM 可以选择将它们配置为使用存储过程或手写查询而不是自动生成的查询,尽管在这种情况下您通常会失去很多灵活性,因为您不能使用 IQueryable<T>...
    【解决方案3】:
    【解决方案4】:

    我找到了一个更好的方法来做到这一点。我将使用微软的数据访问应用程序块。这样我就不需要每次都关闭连接或阅读器。

    【讨论】:

    • 为什么经常担心“关闭连接”? SQL Server 使用连接池,因此您实际上并没有与关闭和打开连接相关的开销......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    相关资源
    最近更新 更多