3、EF操作_使用实体从数据库查询信息

比如:使用EF的实体对象来查询用户表里的所有用户信息

方法一:写sql语句

//实例化实体
FHZMEntities fHZMEntities = new FHZMEntities();
//用实体来查数据
List<UserInfo> userList=fHZMEntities.Database.SqlQuery<UserInfo>("select * from UserInfo").ToList();

方法二:用Linq

List<UserInfo> userList = (from a in fHZMEntities.UserInfo select a).ToList();


方法三:匿名方法(lamdba:表达式),这里直接查即可,因为没有条件

这里实际上没有用lamdba,直接调用实体的对象(UserInfo),这个对象本身就映射的就是数据库里对应的表,调用它既可直接拿到这张表的所有数据
List<UserInfo> userList = fHZMEntities.UserInfo.ToList();



使用EF的实体对象来根据条件查用户表里的所有用户信息

方法一:在where里使用Linq来指定条件

List<UserInfo> userList = (from a in fHZMEntities.UserInfo
                           where (string.IsNullOrEmpty(userinfo.UserName) || a.UserName == userinfo.UserName) && string.IsNullOrEmpty(userinfo.Number)||userinfo.Number==a.Number)
select a).ToList();

方法二:匿名方法(lamdba:表达式)

List<UserInfo> userList = fHZMEntities.UserInfo.Where(a => (string.IsNullOrEmpty(userinfo.UserName) || a.UserName == userinfo.UserName)&& (string.IsNullOrEmpty(userinfo.Number) || a.Number == userinfo.Number)).ToList();



练习:

如图:有一个表单,可以从图中的文本框里输入条件,然后点击提交表单,表单通过js提交到该页面的控制器,在控制器里调用数据库的方法,并返回一个对象集合给页面,页面解析这个对象集合就可以重新更改表格里的数据,其实就是刷新了页面,因为是使用MVC,所以页面加载的时候会先访问控制器,这个控制器里接收页面传过来的条件查用户信息,返回用户信息对象的集合给页面解析。但是刷新之后,如果用户输入了条件,要想用户输入的条件还在文本框中不因为刷新了页面而清空,除了使用Session外,还可以用这种方法,控制器将传过来的参数对象接收,最后不改变这个条件对象,再给返回回去,前端通过js对文本框进行赋值即可。

如下图:用户输了条件:

在后台控制器里接收对象,条件存在对象里,

前台传的值的名字必须和这个对象里的属性的属性名一致,不然接收不到,到时候这个对象就是空的,什么都没有,如果你传的值的名字和这个对象里的属性名一致,它就会把你传的值作为对象里属性名相符的属性的值装在这个对象里。

下图是UserInfo表在EF里的映射对象

因为控制器的参数是UserInfo对象,表单里作为条件的元素的名字要和UserInfo的属性名一样,不然传过去不是这个对象的属性的名字,控制器是接收不到的,如下图,name和UserInfo对象的属性名一致,name的大小写到无所谓

比如:上面页面里输入了条件,条件后,提交,后台控制器接收到的对象里就有传过来的值,如下图所示:

可以故意将用户名的文本框的name的值写成和UserInfo对象里的属性名不一样的进行测试:

如图,控制器接收的对象里的属性里UserName字段的值为空:

控制器里的用到了两种传值方法:一个通过ViewBag把查出来的用户对象集合传到前台,
一个是在View()里将接收到的对象提交到前台,为了在刷新之后用户输入的信息还留在文本框,用户输入的条件在刷新页面后不清空的原理就是在控制器里接收,再把接收的对象返回到前台,通过这个原理实现。

用到的第一个传值方式,viewbag,把查的所有用户信息集合传回去,第二个是View()把用户输入的条件传回去,如图所示:

前台接收用户输入的条件对象:

前台接收查询到的对象集合:

posted @ 2022-01-10 20:07  青仙  阅读(561)  评论(0编辑  收藏  举报