|
关于复用
在我们日常的开发过程中,代码的复用其实是很重要的一部分,ASP.NET MVC框架本身为我们提供了很多很好的复用机制,让我们能充分地利用它们来节省我们的Coding成本。
在简单的Coding中,我们可以通过构造方法来实现代码段的复用,在OOP编程中我们可以使用继承多态来进行类的复用,我们也可以使用设计模式来做类或对象间的代码设计的复用,随着程序的复杂我们就想构造出更佳的复用方式,可以向更高层次上抽象。
应用场景与目标
在信息管理系统中我们会开发大量的List页面,它们功能上通常是非常相似的,一般是包含一个查询条件组和一个列表。
例如下图所示:
那我的目标呢,就是对这里面的查询功能进行封装,以达到“只要更改页面上的条件,就可以实现自动的查询逻辑”这样的功能,即:如果我们要加一个查询条件则不需要修改逻辑代码只修改页面即可。
其实对于一个有经验的开发人员呢,根据HTML页面的查询条件去自动生成查询结果并不是难事。最简单的是将查询提交表单遍历,然后连接成一个SQL进行查询。
但是使用SQL有很多问题:
- 注入问题,因为不知道类型,所以很多地方都要拼写引号就算是使用Parameter,也无法处理类型转换的问题
- 无法处理Or和And共存的问题
- 无法处理其它查询条件如大于小于Like
那我们想一下我们使用EF的话是如何正常去编写一个查询的呢,我们通常是在逻辑中去拼SQL或是写如下的EF:
var query = db.User.AsQueryable();
if (string.IsNullOrEmpty(name))
query = query.Where(c => c.Name == name);
if (id.HasValue)
query = query.Where(c => c.Id == id);
if (string.IsNullOrEmpty(email))
query = query.Where(c => c.Email == email);
return query.ToList();
NET技术:ASP.NET MVC & EF 构建智能查询 一、智能查询的需求与设计,转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。