EF 一些概念彙總

2021-09-27 07:18:31 字數 1527 閱讀 5356

ef 必須要了解的一些 關鍵字含義 

virtual 導航屬性

屬性注釋與fluent api    iqueryable  ienumable   延遲載入 (懶載入)  include 貪婪載入   變數捕獲

ef使用sql語句 以及使用儲存過程

解釋:導航屬性 其實就是 對錶與表之間的關係進行說明  誰是誰的從表virtual 表示

屬性注釋和fluent api 其實就是對欄位之間的說明  誰不為空 誰是主鍵 誰長度多少

eg:[table("timezoneairport")]

public class timezoneairport

[foreignkey("timezone")]

public int32 timezoneid

public virtual timezone timezone //說明了與imezone表有關係 而且自己是從表因為有外來鍵注釋

[maxlength(5)]

public string airportcode

public int32 order

}iqueryable 與 ienumable 型別 其實 個人理解就是  表示式型別 與 記憶體型別

延遲載入(懶載入) 其實就是運用了 iqueryable 延遲載入資料  以及(virtual去懶載入將資料帶出來)

概念:延遲載入延遲在**,1:條件需求的拼接 (iqueryable 表示式樹) 2:導航屬性的內容(virtual導航屬性)poco=>proxy 預設**和延遲都是開啟

詳解:1.針對外來鍵導航屬性,ef只有在這個外來鍵屬性用到的時候才會去查詢2.先拼接出表達條件後放在那等條件完畢後tolist就能互動一次資料庫

貪婪載入就是 在迴圈的時候 如果有延遲載入的話 那麼效率就會低因為延遲載入帶出來的資料也在迴圈裡面 每次迴圈都會去查一下導航資料 所以就會重複多次 影響效率,所以include 的話 作用就是一次性載入出來  就算迴圈裡面用到導航資料 也是從記憶體裡面讀取 而不用去和資料庫一直互動從而提高效率

貪婪載入注意要關閉延遲載入

context.configuration.lazyloadingenabled = false;
變數捕獲    舉例去掉母音字元

ienumerablequery = "how are you, friend.";

foreach(char vowel in "aeiou")

//只更改了u 是因為變數名一樣 where(!vowel).where(!vowel)最後只取u

foreach (char c in query) console.write(c); //how are yo, friend.

ienumerablequery = "how are you, friend."; 

foreach (char vowel in "aeiou")

//因為變數名不一樣所以  where(!a).where(!b)都加上了

foreach (char c in query) console.write(c); //hw r y, frnd.

澄清一些概念

參考 以前一直分不清 authentication 和 authorization,其實很簡單,舉個例子來說 你要登機,你需要出示你的 passport 和 ticket,passport 是為了證明你張三確實是你張三,這就是 authentication 而機票是為了證明你張三確實買了票可以上飛機...

Windws OS 一些概念

答 並行是多個執行緒同時進行 併發是多個執行緒在同一時間段內進行。並行優於併發。1.函式呼叫 同步是函式執行完畢才返回,絕大多數函式都是這樣的 非同步是函式開始執行時就返回,自己的執行仍在繼續,本質是多執行緒。2.執行緒排程 同步 各執行緒間有明確的次序關係。互斥 臨界資源某一時刻只能被乙個執行緒訪...

Webpack 一些概念

打包工具有多種,實際中 webpack 接觸的比較多,目前中文文件跟英文文件有些對不上,其中有些概念比較分散,對此進行集中的整理。任何時候,乙個檔案依賴於另乙個檔案,webpack 把這種情況視為依賴關係。這讓 webpack 可以接受非 資源,例如或字型,並且可以將它們作為依賴提供給你的應用程式。...