实际项目中遇到EF实体类的操作问题及操作方法

之前一直做ASP,都是直接写数据库操作语句,但是现在使用linq或者EF了,具体数据库操作不会了,遇到几个问题,然后经过查找资料解决了,记录一下。

一、遇到序列化问题

遇到循环引用问题,我的项目是一个学生表,有关联classID和成绩表,造成循环引用,查询了一下可以用如下博客的做法,将循环忽略,这样就会不报错输出,但是输出的内容不是你想要的了,想得到原来的内容,就要对输出的内容做处理才行。我的做法是将查询到的数据重新赋值给一个自定义的类,然后将自定义的类再序列化,后来发现这个操作其实跟自定义序列化数据起的作用是一样的。

http://www.cnblogs.com/kangao/p/5382733.html

二、遇到类似in查询问题

  可以采用contains,可以使用表的某字段contains(条件),也可以反过来条件contains(表的某字段)

三、遇到同表多条件联合查询问题

  建议使用级联操作就好了,一个list<类>后增加多个where查询即可解决

四、遇到多表联合查询问题

  我的项目是用户输入查询条件,比如班级名称,我需要根据查询条件找到班级ID,然后根据班级ID找到改班级的学生名单,但是由于用户输入的条件可能不全,或者根据用户的输入条件会得到多个班级ID,这样再去查找学生名单。没办法用where那一套了, 然后就用了这样一个联合写法:

var ClassID = from Class in ef.StudentClasses join student in ef.Students on Class.ClassId equals student.ClassId where Class.ClassName.Contains(ClassName) select Class.ClassId;

然后再使用:

  StudentList = StudentList.Where(a => classID.Contains(a.ClassId)).ToList();

五、序列化时间带T问题

  网上一搜一大堆,这个方法最好用了,只是IsoDateTimeConverter 在命名空间using Newtonsoft.Json.Converters;下,要增加引用

           IsoDateTimeConverter timeFormat = new IsoDateTimeConverter();
                    timeFormat.DateTimeFormat = "yyyy-MM-dd HH:mm:ss";
                    JsonConvert.SerializeObject(要序列化的对象,timeFormat);

搞定!

posted @ 2017-05-30 16:17  liujiekun  阅读(880)  评论(0编辑  收藏  举报