公司最近一个小项目用的mvc
用的ef实体框架 然后都分层的时候就很纠结了 
我们把ef里的实体剥离出来作为三层的model 
用linq to ef 操作数据库
然后就是idal 接口 bll 接口 
controller调用的是bll感觉结构比较混乱 因为ef贯穿整个程序 要怎么样分层呢?又比如页面有两个下拉框 分别对应两张表 表1 表2 
联动修改的时候 我直接把表2的方法写在了表1的controller里
按照mvc的理论 是不是应该用jquery ajax 调用表2的controller??又比如说页面中涉及到了多张表的操作 全部写的一个controller中吗?
还是应该通过ajax 调用不同controller中的方法 分别处理初学 请不吝赐教

解决方案 »

  1.   

    ef本来就是一种dal。当然如果你们喜欢搞很多层次,也没有什么。asp.net mvc整体上来说都是表现层的东西,controller也是调用bll,没有什么奇怪的。它应该丝毫不沾ef的概念,这样你的bll就可以在多种应用中共享(比如你的windows service项目中使用同一个bll类库)。jquery则是浏览器端的编程机制,跟web服务器隔着远程连接。因此jquery代码直接访问asp.net mvc的表现层的接口,也就是controller。有趣地是,不断有人说什么asp.net mvc的控制器代码是用来与view相隔离的的。可是不断有人在编写controller的时候纠结于view的设计,为了view而设计,根本无法分离。其实正是因为这个原因,java的serverlet架构被很多java开发人员骂为大而无当的框架。可惜被asp.net项目组当作宝典,反而抄袭来设计了asp.net mvc。
      

  2.   


    如果我是asp.net mvc的传教士,我会告诉你controller设计是不能纠结于view的设计的。你不能为了view而设计controller。这个希望你自己判断。我认为这本来就很乱。