zoukankan      html  css  js  c++  java
  • 实际项目中遇到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);

    搞定!

  • 相关阅读:
    [译]Java例解Interface
    【笔记】2014-01至2014-02
    【笔记】2013-12
    【笔记】2013-10至2013-11
    【笔记】2013-09
    【笔记】2013-08
    【笔记】2013-07
    生活工作中好用的快捷键和小工具(更新)
    Android Studio更新Gradle问题
    gradle构建spring5源码
  • 原文地址:https://www.cnblogs.com/liujiekun/p/6920532.html
Copyright © 2011-2022 走看看