【问题标题】:.NET: Writing DataAccess dll.NET:编写 DataAccess dll
【发布时间】:2010-04-28 09:02:58
【问题描述】:

我想在 dll 中编写所有数据关系过程(通过 .NET 与 DataAccess 相关的一般功能),我想重复使用它。该dll中应具有哪些类型的功能?有些人想使用存储过程,有些人想使用语句。大家可以推荐我吗?请指导我!谢谢大家!

【问题讨论】:

  • 感谢您的评论!我需要研究你上面提到的。谢谢你的分享。

标签: .net stored-procedures dll


【解决方案1】:

这是一个相当大的话题,但这是一个开始:

Overview of ADO.NET

对于简单的 CRUD 操作,我可以总结一个简单的方法来做到这一点,假设您已经对数据库有所了解,并且您的数据库已经存在。

1) 使用 VS IDE 附带的数据集设计器。 (还有其他方法)

2) 将您想要的表格拖放到表面上。这将创建大量生成的代码来支持您的 CRUD 操作。无论您是使用文本语句还是存储过程,您都可以轻松自定义它们。设计者知道如何处理参数和数据类型。您还可以对数据进行抽样,以确保语句正确。

3) 为您拖放的每个表创建数据表和适配器,并为成员提供正确的类型。你可以像这样使用它们:

using (MyDataSet.MyDataTable sigtbl = new MyDataSet.MyDataTable ())
using (MyTableAdapter adtp = new MyTableAdapter())
            {
               adtp.Fill(sigtbl, TargetTime);
               //sigtbl now contains the data from your DB. Use LINQ if you want to subquery or whatever.
               adtp.Insert(newSig,NewTime) //Parameters depend on your insert.
            }

4) 将数据库逻辑封装成有用的业务功能,并从您的其他项目中引用该项目。尝试将数据库内容保留在自己的层中。

无论如何,这是一个非常基本的。当您尝试自己执行此操作时,您一定会遇到一些问题,因此请确保您对 ADO.NET 的工作原理有很好的了解,并在回来时提出更多问题。

其他选择,仅提一下: 1)如果您不希望为您生成类型化类的开销+复杂性,请使用 System.Data 东西。 2)看LINQtoSQL:LINQtoSQL

【讨论】:

    【解决方案2】:

    除了前面的建议,您可能还想看看企业图书馆的数据访问块: Microsoft Enterprise Library 5.0 The Data Access Application Block 也对 ADO.NET Entity Framework

    【讨论】:

    • 是的,我需要先学习那些!然后我会像 stakx 所说的那样提出具体问题。
    【解决方案3】:

    Microsoft Enterprise Library,使用数据访问应用程序块应该可以满足您的需求。它本身就是一个框架。

    另一个有趣的数据访问库是众所周知的 ORM NHibernate

    如果你想加快你的 DAL 开发,你应该考虑这两个单独或一起使用。

    EntLib DAAB 将允许您在应用程序配置文件中提供命名的连接字符串,这样您就无需在连接字符串更改时部署应用程序的新版本,只需配置文件即可。每个配置文件只管理和配置一个连接字符串也是一种常见的做法,因此如果只有一个连接字符串发生更改,您只需为此连接部署这个新的配置文件,就完成了! EntLib 允许您根据最佳实践管理您的连接池。一切都通过非常简单的 XML 配置文件实现。

    NHibernate 是一个对象/关系映射工具,可以通过 ISession API 为您处理数据访问。您需要专注于开发您的业务类图。完成后,只需根据您的对象模型编写 XML 映射文件,然后您就可以将对象持久保存到底层数据存储中,无论您使用什么数据存储。在使用 SchemaExportTool 时,您甚至不必费心编写 DDL 脚本,因为 NHibernate 可以为您创建关系模式!

    正如我所说,一个或两个,它们本身就是 DAL 层,还有更多!不要费心将它们包装到另一个类库中,除非您想为 DAL 构建一个用户友好的工具。而且它们是 100% 可重复使用的!不是很好吗?

    【讨论】:

      【解决方案4】:

      我会远离 DataTables、Adapters、Sets 等等。我一直觉得它们很笨重。我更喜欢编写存储库类、服务层等。我建议您阅读领域驱动设计 (http://dddcommunity.org)。

      【讨论】:

        猜你喜欢
        • 2015-10-29
        • 1970-01-01
        • 2019-04-16
        • 2011-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多