如果我想采用mvc+entityframework的架构,其中根据数据库表结构
自动生成数据库实体。
另外页面中需要用到的model是否需要自己新建一个类(不直接使用数据库实体类)
然后调用BLL层返回对应的类数据。
如果是这样的话,那在BLL层调用DAL的方法里面 就需要进行 Model对象和数据库实体对象的转换了 这个效率会不会有问题?
就是我查询一些数据 通过EF获取的数据是先获取数据库实体数据,然后再转换成对应的model呢
还是直接写SQL查询的时候转换成model呢?
另外还涉及到增删改,是传入model对象还是数据库实体对象呢?
说下我的理解,MVC中M指的是ViewModel,它跟View中的数据结构对应的,理论上在View中是不应该出现业务逻辑的,所以ViewModel一般是在Service或者BLL层经过一些业务处理后返回的数据模型,用博客园的文章详情页举例,该页面不仅包含文章信息,还包含了评论列表,上一篇,下一篇等额外信息,所以文章详情页的ViewModel应该是这个样子
public class ArtivleViewModel { public int ID { get; set; } public string Title { get; set; } public string Body { get; set; } public List<Comment> Comments { get; set; } public int PreUrl { get; set; } public int NextUrl { get; set; } }
一个问题里面出现三个问号,通常就是需要看书才能解决的。
1、效率从来都不是一个问题,只有当需要的时候才是问题。
2、都可以,看你心情决定。
3、都可以,看你心情决定。
回答得很酷
这样问是因为平时开发比较随心,但是想知道主流的采用的什么方式,因为如果通过DAL层返回数据,然后利用automapper自动映射进行转换,总感觉会浪费一些性能。
如果是我自己,倾向于通过DAL层直接返回view上面可以使用的model对象。
@犇牛牛:
1、性能就是用来浪费的
2、没有主流这种东西,你需要知道的是不同场景下,如何选择不同的开发方式。
3、不同规模的项目考虑的优先度是不一样的。
我个人的见解
ui model
bll model
dal model
是不一样的东西 但是一般图简单 3个都用dalmodel