【发布时间】:2014-04-04 01:00:25
【问题描述】:
我无法为某个应用找出最佳方法。我不太习惯取代旧 TLA(三层架构)的新架构,所以这就是我的出发点。
在为我的应用程序(POCO 类,对吗??)设计 Model 和 DAL 时,我有以下疑问:
我的模型类应该只公开属性并实现规则验证吗?几年前我会实现类似于现实世界的类,所以如果我有一个 可以走路的人,我会创建这样的方法。现在,我检查的每个样本(MVC、MVVM 等)都有“哑类”,它们公开数据并在需要时验证这些数据。复杂的操作呢?它们是否应该以某种方式成为 VM 的一部分(我怀疑这是对的……)。
当使用 LINQ to SQL 作为 ORM 映射器时,我应该在模型中公开实体的所有属性吗?例如,我的大多数实体都有一个 ID 列作为其主要列钥匙。这应该与模型或业务无关,只是我的数据库架构的实现细节。
如果 (1) 和 (2) 为假,那么模型 应该 公开对类的复杂操作,而不是公开所有实体属性,怎么办我使用 LINQ to SQL 和 sqlmetal 创建模型类? 我见过一些示例使用部分类来扩展架构实体的功能,但这会导致暴露实体详细信息(因为它只是一个扩展)。
如果 (2) 为假,使用 sqlmetal 和 LINQ 作为 ORM 的最正确方法是什么? 我使用 sqlmetal 提取架构,使用 LINQ 选择实体,然后什么?根据我在数据库中的内容创建新实体?
在我的研究中,我发现 MVVM 中的 VM 和 MVP 中的 P 有点相似。 Presenter 的职责是什么?还有那些ViewModel?我主要关注这两种模式,因为它们将视图与模型完全隔离开来,这是我更喜欢的一个方面。
在设计此类 [MVVM, MVP] 应用程序时有哪些方法? 我应该开始考虑模型,然后是 {P,VM} 层,然后是视图?我知道,这更像是一个主观问题,但例子会很好。
我希望我能够使问题足够客观。为了简化回答,我对我的疑问添加了解释,但恐怕这会使帖子有点太大了。无论如何,非常感谢您的阅读,非常欢迎任何建议。
【问题讨论】:
-
我应该首先学习如何在 SO...中获得问题的答案......
-
我强烈建议你一次问一个问题。你这里有6个问题,分开发帖
-
@Pierre 303:谢谢,也许可以。
标签: model