ef延遲載入不到導航屬性問題

2022-06-10 20:27:09 字數 335 閱讀 7846

最近做專案踩到了乙個ef問題上的坑,導航屬性(外來鍵關鍵,如子表或主表等)「.」出來後是null,外鍵值也對,資料庫和ef的關係配置也都正確,就是載入不出來。後來發現實體裡導航屬性前少了個virtual修飾符。 總結教訓如下

1、要用導航屬性,前面必須有virtual,虛屬性或方法,被ef的procy **類重寫後才能延遲載入

2、實體類前面不能有sealed 密封修飾符,指類不能被繼承,所以sealed裡面不能有virtual

3、另附c# virtual用法介紹 

EF延遲載入 懶載入

關於ef懶載入英文翻譯lazyload也俗稱延遲載入 只有是 導航屬性 並且 類是public 字段必須用virtual 才能用延遲載入,ef預設是延遲載入的,什麼是延遲載入呢?延遲載入就是當需要用到集合的時候才會去資料庫取資料,有點是什麼呢?優點就是按需取資料提高了載入的速度,缺點是需要多次執行s...

EF 延遲載入技術

延遲載入 優點 只在需要的時候載入資料,不需要預先計畫,避免了各種複雜的外連線 索引 檢視操作帶來的低效率問題 使用方式 兩步 第一 在需要延遲載入的屬性前加上virtual 該屬性的型別可以是任務的集合型別icolloct或者是0 1.1關聯屬性。如 publicvirtuallistproduc...

EF延遲載入LazyLoading

只在需要的時候載入資料,不需要預先計畫,避免了各種複雜的外連線 索引 檢視操作帶來的低效率問題 阻止延遲載入解決方案 1 tolist 返回的東西是個記憶體級的物件,就是說強迫它在這裡執行了一次sql語句,查詢到的東西被放在web伺服器記憶體裡了,這樣可以達到快取的效果,這就阻止了延遲載入 2 在建...