model一定是和数据库表对应的么?

Model既不绝对对应数据表,也不需要对应前端视图,Model对应的是“数据模型”这个抽象的概念 —— 状态和操作。

数据表是Model的存储实现,存储实现不一定只有数据表,可能用不同存储系统存放
数据分片,Model的作用就是掩盖这个底层细节,给上层代码一个统一稳定的接口。

前端视图需要Model,但并不直接操作Model,这是Controller或者View做的事,所以本身并不直接决定Model的
设计。

Model的设计表面上同时对应数据表和前端视图,严格地说两者都不是Model设计的起因。Model实现“数据模型”这个抽象的概念。


Model 应该要和数据库表结构一致么?
以user为例子,假设前端呈现的user信息有某个字段不包含在user表内,而是要通过联合其他表多表查询得出。
这个时候后端UserModel应该:
1,和数据库保持一致,发送数据给前端前 整合数据(发送另一个user class)数据层用DataTable接收,在逻辑层进行整合
2,和前端保持一致,在后端填充构造Model时就一步到位。(目前方案,Model里冗余了数据字段,未和数据表一一对应)
3,多造API,从前台整合数据。
4,在user表中添加一个字段
5,其他

6,涉及到下拉列表时,可以选择再次请求后台输出(很多网站都是这么做的),也可以进行页面的封装,一次将数据都取回来(ViewModel),然后自己用JS进行html封装

应该采取什么样的方式呢?
或者是不是应该创建一个数据库视图?可以将view 作为数据源获取数据么?

不考虑修改成本。

新手,问得问题比较傻,如有错误,大家可以随意喷。。。但希望还是可以帮我解答一下,十分感谢!

所以才会提出MVVM啊
M = Model = 映射数据库结构
VM = ViewModel = 映射显示层需要的数据结构
V = View = 显示层本身

当然这个概念本来是给WPF和银光用的,所以放到web app上不完全合适。但是基
本概念没任何问题

在web app里边
V层就是你的前端,HTML+CSS+JS
VM就是你的web service返回值以及前端JS需要的数据结构
M就是你后台的数据映射

VM和M之间的转化就是你的web service
V和VM之间的关
系一般靠各种框架来解决,比如React或者Angular等等

至于你的VM和M怎么划分,那就是另一个问题了

   

结论:1、Model不一定和数据库表一致,结构简单时可以一致,Model中比表中多的字段再进行插入更新数据时可以不使用
        2、划分为Model和ViewModel,会构建多个model,ViewModel是前台展示Model,可以是多个Model的结合体,ViewModel结构取决于前端页面有哪些数据,是整个页面的数据,而不仅仅是表关联的查询结果。

       

posted @ 2016-09-27 11:43  北漂小伙  阅读(1219)  评论(0编辑  收藏  举报