这个困惑存在好长时间了,就我现在知道的orm方面的框架有linqtosql nhibernate ado.netEF。
还是那个model的问题,主要以前用的是三层结构,有一个单独的model项目,现在如果要用linq to sql 和Ado.net EF自动把model生成好了而且这个模型数据访问等方法都有了,这样UI层如果想用model,也得引用dal的项目,感觉比较混乱,但看过网上的一个例子,还真是这么做的,这个例子中ado.netEF生成的modle,用来在服务层之间传输.
刚才看了nhibernate的简介,好像他可以生成自己的model,可以实现分层。
我的疑问主要是该不该在model里他加上数据访问的方法。难道orm要和三层冲突吗?
框架没有正确错误之分,只有是否合适之分。有人使用贫血模型(只有属性,没有方法),CRUD操作在单独的数据访问类中实现,有人使用充血模型,将CRUD放在模型内部,孰优孰劣?这是没法下定论的。我们能讨论的只能是,根据当前系统规模、业务需求等条件来判断那种设计方案更合适,而已。
如果是初学者,我建议使用贫血模型,将Model层与DAL层分离开,Model作为实体模型和数据传输对象,可以为各个层所引用。
等熟悉了各种架构,再学习如何设计复杂的领域模型。
Linq的这种作法个人感觉与Mvc并不冲突,如果楼主感觉不方便,可以单独再封装一层VO以实现值对象的传递,也是很容易实现的。