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 可以接受非 資源,例如或字型,並且可以將它們作為依賴提供給你的應用程式。...