我想知道从C#代码组织数据库的最佳方法是什么。
我曾经有不同的方法:
现在我认为为每个需要存储的datadomain类都有一些非静态类会很好,这将会进行存储。
最好的方法是什么?是否有任何好的库可以提供用于存储对象的良好API?
答案 0 :(得分:5)
使用对象/关系映射器(ORM)。我个人最喜欢的是nhibernate。如果您需要Microsoft产品,请使用Entity Framework。
ORM通常实现UnitOfWork和Repository模式,这使您更容易处理数据库操作并遵循单一责任原则。
你还提到了单身人士。如果可能,我会避免它们。你有没有尝试unit test一个使用单身人士的课程?除非单例是实际实现的proxy,否则这是不可能的。删除单例的最简单方法是使用dependecy injection来反转依赖项。有几个containers可用。
答案 1 :(得分:4)
这些天使用数据库的推荐方法是ORM。
查看nHibernate(社区项目)和Entity Framework(Microsoft提供的),了解一些最受欢迎的.NET选择,不过还有很多。
这些库可为您提供所需的所有数据访问权限,并且需要一些配置。
答案 2 :(得分:3)
repository pattern是构建数据访问逻辑的一种非常常见的方式。
答案 3 :(得分:1)
这两种方法都会让你受到严格审查或解雇我工作的地方。
请参阅:
分离关注点。对象不应该处理加载或savint itseld。
静态方法意味着你永远不能在两个不同的数据库中拥有相同的类。
这是一个难题 - 使用UnitOfWork模式或Repository模式等问题解决了20年。大量的项目 - 删除“C#”(不,伙计,世界不会围绕一个语言解析)并查找对象/关系映射器。我记得20年前使用samlltalk并在10年前在C#中编写了一篇文章,有时.NET开发人员认为字符串操作是最先进的。
NHibernate,实体框架,哎呀,甚至BlToolkit作为我首选的轻量级工具包,这些天向你展示了正确的模式。