【发布时间】:2011-09-30 10:04:00
【问题描述】:
我已经开始维护一个应用程序,该应用程序带有一个大型数据库,该数据库部分未标准化/相当混乱。大量重复数据和一些包含大量字段的表(30+)。例如,我有一个名为 Orders 的表,其中包含许多字段。我会去拆分这个表,但是不允许更改数据库布局。现在,如果我坚持使用存储库模式,我相信我应该为它创建一个 Order 实体和 CRUD 方法。问题是,业务逻辑几乎从不需要加载/更新整个订单实体,而只是一个子集。这将构成很多实体(如 FullOrder、OrderMetaInfo、OrderProcessingDetails 等)。
我的问题是,处理这种数据库混乱的最佳方法是什么?我正在考虑创建一个名为 Orders 的简单类,之前提到的实体是 POCO,而不是像 UpdateOrderMetaInfo() 或 GetOrderProcessingDetails() 这样的方法。在您开始考虑之前,这似乎是一个很好的方法,有两个表,一个是 Orders,另一个是 ArchivedOrders(不,字段不相同但非常相似 - 甚至不要问)。看来我会在大量重复代码中运行。现在我开始考虑编写一个非常简单的数据库访问类,您可以在其中传递一个手工制作的 sql 查询并取回一个记录集,就像在过去的美好时光一样。你有比这更好的主意吗?
事实和限制:它是一个 Sql 数据库,该项目是用 C# 编写的。有另一个系统使用相同的数据库,因此更改数据库布局不是一种选择。使用 EF 或任何第 3 方产品进行数据访问也不是一种选择。
很抱歉这篇文章太长了,感谢您的反馈。
【问题讨论】:
-
卖给他们,让您使用 db 更改其他应用程序!
标签: c# design-patterns data-access-layer