当前位置: 代码迷 >> .NET分析设计 >> 多个表结合提取新字段,原有的Model类不满足需求了如何避免
  详细解决方案

多个表结合提取新字段,原有的Model类不满足需求了如何避免

热度:189   发布时间:2016-05-01 22:33:44.0
多个表结合提取新字段,原有的Model类不满足需求了如何处理?
具体情况是:

系统需要访问数据库,如果用单纯的ADO.NET方式,表A定义了一个ModelA,表B定义了一个ModelB,单纯访问一个表都没有问题,如果需要访问A,B表联结的结果,其中有A的字段,也有B的字段,是不是又得定义一个新的ModelAB。来进行结果的存储与前端传递?

请大家指点,非常感谢。
------解决方案--------------------
1 ViewModel 你可以了解下   
2 分层分好了 只是改的少点,而不是不用改
------解决方案--------------------
不是有 字段 as 别名 吗?
------解决方案--------------------
请问你的model都不分层吗?表现层可以定义一个viewmodel啊
------解决方案--------------------
Model类跟数据库表没有关系。你在前端访问后端的BLL层时需要什么封装好的对象,就应该设计一个Model。

例如一个“查询某用户的移动话费”的操作,需要返回一个Model数据,这个数据中有一个用户的账户基本信息,还有每一天的通话汇总、每一天的短信汇总、每一天的流量汇总、每一个月的基本月租费,查询操作需要需要访问十几个数据库表,但是结果就是一个Model。

Model如果跟数据库表一一对应,就太低级了,就没有多大必要纠缠在这种Model了。你就应该找更高级的封装模式了。
------解决方案--------------------
引用:
如果需求有变,又要新多一个B的字段,是不是又要定义一个新的ModelAB2?这样子没完没了,很多一大堆东西都要重复写呀。


之所以“没完没了、重复”,是因为你的Model不是从真正的Model出发的,而是从什么数据库表出发的。如果你对需求花点时间进行建模,而不是扯什么数据库表,那么你就不会觉得没完没了了,反而觉得这些都是从实际需求出发的。

至于说每一个数据库表是不是需要对应一个Model类,那是你的“个人爱好”。例如你非要是用什么坑爹的什么“x码生成器”,它给你这样生成了一大堆Model类,那么你就用着呗!反正这些都是层次很低的Model,不是设计师应该关注的最终的Model。
------解决方案--------------------
通常并不会随随便便地“多一个字段”的。例如(假设)上述就是移动公司计费部门给各省公司客服部门的查询终端提供的几个Model之一,那么这个Model估计在5年之内把就不会再增加什么字段了,直到移动公司有了新的改革。

而你之所以担心“总是需要多一个字段,两个字段”,一方面这是在一个产品“什么应用基础都没有、白手起家”刚刚开始尝试着编程时,或者就是一个软件的用户市场快垮掉了。
  相关解决方案