组织数据库工作的最佳方式
本文关键字:最佳 方式 工作 数据库 | 更新日期: 2023-09-27 18:17:24
我想知道从c#代码中组织数据库工作的最佳方法是什么。
我以前有不同的方法:
- 每个对象都有Save, Update和Delete方法,实现了所有的逻辑。
- 有一些静态类有静态方法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,这些天我最喜欢的轻量级工具包都能给你展示合适的模式。