實際專案中遇到EF實體類的操作問題及操作方法

2022-02-23 03:37:29 字數 1189 閱讀 2090

之前一直做asp,都是直接寫資料庫操作語句,但是現在使用linq或者ef了,具體資料庫操作不會了,遇到幾個問題,然後經過查詢資料解決了,記錄一下。

一、遇到序列化問題

遇到迴圈引用問題,我的專案是乙個學生表,有關聯classid和成績表,造成迴圈引用,查詢了一下可以用如下部落格的做法,將迴圈忽略,這樣就會不報錯輸出,但是輸出的內容不是你想要的了,想得到原來的內容,就要對輸出的內容做處理才行。我的做法是將查詢到的資料重新賦值給乙個自定義的類,然後將自定義的類再序列化,後來發現這個操作其實跟自定義序列化資料起的作用是一樣的。

二、遇到類似in查詢問題

可以採用contains,可以使用表的某欄位contains(條件),也可以反過來條件contains(表的某欄位)。

三、遇到同表多條件聯合查詢問題

建議使用級聯操作就好了,乙個list《類》後增加多個where查詢即可解決

四、遇到多表聯合查詢問題

我的專案是使用者輸入查詢條件,比如班級名稱,我需要根據查詢條件找到班級id,然後根據班級id找到改班級的學生名單,但是由於使用者輸入的條件可能不全,或者根據使用者的輸入條件會得到多個班級id,這樣再去查詢學生名單。沒辦法用where那一套了, 然後就用了這樣乙個聯合寫法:

var classid = from class in ef.studentclassesjoin 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);

搞定!

EF實體類種的Virtual關鍵字作用

在使用ef中我們會使用導航屬性,其中會加上virtual關鍵字,這個有什麼作用呢。加了此關鍵字就可以使用lazyload懶載入,不加此特性的話是載入不出此導航屬性的內容的。例子,有兩個實體sys user 和 sys dep 可以看到將sys dep的depname資訊顯示出來了 下面我們把virt...

Web 專案中將 零散資料 封裝為 實體類

1.前端html頁面 js 非同步請求提交資料 把從頁面中獲取的資料 序列化 然後提交 非同步提交 this serialize jq入口函式 function json 2.前端servlet封裝 1.獲取頁面資料 同步 非同步提交的資料 map map request.getparameterm...

實際專案中對錶的批量操作(批量刪除)

1.批量刪除 根據id批量刪除 delete from packing list c where packing list id in separator 根據id批量刪除裝箱單資訊 param id return int deleteall param ids string id 3 在相應的se...