我想有一个clsConnection
我们可以利用的类来执行每个 SQL 查询,如 select、insert、update、delete ......非常好。
但它可能有多完整?如何?
我想有一个clsConnection
我们可以利用的类来执行每个 SQL 查询,如 select、insert、update、delete ......非常好。
但它可能有多完整?如何?
您可以按照AB Kolan的建议使用 LINQ to SQL,或者,如果您没有时间学习曲线,我建议您查看Microsoft Enterprise Library Data Access Application Blocks。
您可以使用企业库中的 DAB (SQlHelper)。这具有数据库操作所需的所有方法/属性。您不需要创建自己的代码。
或者,您可以使用像 LINQ 或 NHibernate 这样的 ORM。
在进行数据访问时,我倾向于将其分成 2 层 - 纯粹是为了可测试性。
将获取键值和管理真正底层数据收集的逻辑与原子插入、更新、选择删除等完全分开。
通过这种方式,您可以非常轻松地测试低级数据收集的逻辑,而无需从数据库中读取和写入。
这样,一层类有效地管理对单个表的写入,而另一层则关注从查找等中获取数据以填充这些表
位于这 2 个 dal 层之上的业务逻辑层显然管理实际的业务逻辑——这意味着数据结构与业务逻辑尽可能分离……也就是说,您可以替换 dal 而不会感到痛苦非常。
您可以采取的两条路线很有效
ADO.Net
这非常强大,因为您可以完全控制,但同时它很耗时并且感觉重复。也是它的老派,所以大多数人都对它感到厌烦,因此所有的 linq 2 sql 评论。有了这个,你打开一个到数据库的连接,然后对它执行一个命令。
基本上,您创建一个类来与数据库交互,并使用它来使用数据库中的存储过程。最低级别的类本质上是用它的参数触发命令,然后用返回的值填充自己。
和 Linq 2 SQL
这是一个很酷的系统。从本质上讲,它使 SP 在 90% 的情况下是多余的,以换取在您的代码中允许强类型的 sqlesque 语句 - 节省时间并且更可靠。我仍然使用 2 dal 层,但利用它会为您生成具有属性的基本类并简单地添加功能来实际执行原子操作的事实。然后更高级别实现多个对象的读取和写入逻辑。
最好的部分是您可以使用 linq 2 sql 轻松生成集合集合,然后使用一个命令编写所有插入和更新(实际上,您倾向于单独做事)。
一旦你开始使用 L2S,它就非常强大,而相比之下,从 ado.net 生成对象集合可能会很痛苦——尤其是当你不得不一次又一次地这样做时。
另一种选择是 Linq 2 实体
由于链接服务器,我遇到了这个问题,它也不喜欢视图,如果你的表没有 pk 或约束,那么它也不喜欢生活。我暂时远离它。
当然,如果您的意思是您想要一个用于从数据库写入和读取数据的通用类,我认为您将增加复杂性而不是解决问题。真的你不能避免编写代码;) - 数据访问的每一位都是独一无二的,试图通过 ado.net 或 l2s 对其进行通用化真的是在自找麻烦。
小项目:单例类(如 DatabaseConnection)可能对您正在做的事情有好处。
大型项目:企业库有一些数据库代码;也许是 NHibernate 或实体框架。
您的问题不够具体,无法就此给出非常明确的答案。
在我看来,您只是在重新编写 ADO.NET SqlConnection(它已经具有 SqlCommand 类型的附加属性)。或者 Linq to SQL(或者,甚至是 Linq to Entities)。