前几天,我有一个客户询问构建一个简单的 WPF LOB 应用程序的建议。他们基本上想要一个用于数据库的 CRUD 应用程序,主要目的是作为 WPF 培训项目。
我还向他们展示了 Linq To SQL,他们印象深刻。
然后我解释说直接从他们的 BLL 或 UI 代码中使用 L2S 实体可能不是一个好主意。他们应该考虑类似存储库模式的东西。
在这一点上,我已经可以感觉到过度工程的警钟在他们的头脑中响起(在某种程度上也在我的头脑中)。他们真的需要一个简单的 CRUD 应用程序的所有复杂性吗?(好吧,它有效地充当了他们的 WPF 培训项目,但让我们假装它变成了一个“真正的”应用程序)。
- 您是否认为在整个应用程序中使用 L2S 实体是可以接受的?
- (根据经验)重构以后使用另一个持久性框架有多困难?
在我看来,如果 UI 层将 L2S 实体用作简单的 POCO(不涉及任何 L2S 特定方法),那么以后如果需要的话应该很容易重构。
他们确实需要一种方法来集中 L2S 查询,因此需要某种方法来管理它,即使他们确实直接使用 L2S 实体。因此,在某种程度上,我们已经在推动 DAL/DAO/Repository 的某些方面。
我可以看到 Repo 的主要问题是 L2S 实体和某些域模型之间映射的痛苦。它真的值得吗?您可以在 L2S 实体上“免费”获得很多东西,我认为一旦映射到另一个模型就很难使用这些实体。
想法?