组织数据库工作的最佳方式

本文关键字:最佳 方式 工作 数据库 | 更新日期: 2023-09-27 18:17:24

我想知道从c#代码中组织数据库工作的最佳方法是什么。

我以前有不同的方法:

  1. 每个对象都有Save, Update和Delete方法,实现了所有的逻辑。
  2. 有一些静态类有静态方法Get, GetList, Update——几乎和以前的方法一样,但是数据库逻辑是从数据域类中提取的。

现在我认为这将是伟大的有一些非静态类的每一个数据域类,我需要存储的地方,这将做存储。

最好的方法是什么?有没有好的库提供了很好的API来存储对象?

组织数据库工作的最佳方式

使用对象/关系映射器(ORM)。我个人最喜欢的是nhibernate。使用实体框架,如果你想要一个微软的产品。

ORM通常实现统一工作和存储库模式,这使得您更容易处理数据库操作并遵循单一职责原则。

你还提到了singleton。如果可能的话,我会尽量避免。你试过对一个使用单例的类进行单元测试吗?这是不可能的,除非单例是实际实现的代理。移除单例最简单的方法是通过使用依赖注入来反转依赖。

目前使用数据库的推荐方法是通过ORM。

看看nHibernate(社区项目)和Entity Framework(微软提供),它们是。net的一些最流行的选择,尽管还有很多很多。

这些库为您提供了所需的所有数据访问,只需进行一些配置。

存储库模式是构建数据访问逻辑的一种非常常用的方法。

这两种方法都会让你受到严格审查,或者在我工作的地方被解雇。

:

  • 关注点分离。对象不应该自己处理加载或保存。

  • 静态方法意味着你永远不能在两个不同的数据库中使用相同的类

这是一个难题——20年来一直在使用像UnitOfWork模式或Repository模式这样的东西来解决这个问题。很多项目都是这样的——删除"c#"(不,伙计,世界不会围绕一种语言进行解析),然后查找对象/关系映射器。我记得20年前在smalltalk中使用过一个,10年前在c#中编写过一个,当时。net开发人员普遍认为字符串操作是最先进的。

NHibernate, Entity Framework,甚至是BlToolkit,这些天我最喜欢的轻量级工具包都能给你展示合适的模式。