在context類的建構函式中新增以下**,就可以在除錯的時候在【輸出】視窗中看到sql語句
this.database.log = s => system.diagnostics.debug.writeline(s);
ef中有三種方式處理關聯實體的資料載入:預載入,懶載入,顯示載入
現在有兩個類
publicclass
book
[foreignkey(
"authorid")]
public author author
}public
class
author
[required]
public
string name
}
預載入:
普通查詢
public iqueryablegetbooks()
返回結果
[, ]
ef沒有載入跟book相關聯的表author。
現在我們使用include進行預載入,使關聯實體作為乙個整體進行資料庫查詢
public iqueryablegetbooks()
返回結果
[}]
延遲載入:
在實體類的關聯屬性上新增virtual關鍵字即可啟用延遲載入
publicclass
book
[foreignkey(
"authorid")]
public
virtual author author
}
現在執行查詢
var books = db.books.tolist(); //book物件中沒有author資料
var author = books[0].author; //
載入books[0]的author
查詢主表的時候,不會帶有關聯表資料,直到有訪問關聯物件的時候,才會查詢。這裡有個問題就是 像上面的查詢,雖然只訪問的第一本書的作者,但會查詢所有的作者,並且是根據book列表中存的authorid,一條一條的這個查詢。
所以如果使用延遲載入,對字段的序列化要謹慎對待(可以通過使用dto解決這個問題)。
關於ef資料訪問的文章:這裡
步步深入EF(一) EF原理
一 什麼是ef?實體架構 entity framework 是微軟以來 ado.net 為基礎開發出來的物件關係對映 orm 解決方案,它解決了物件持久化問題,將程式設計師從編寫麻煩的 sql語句中解放出來。優點 支援多種資料庫 microsoft sql server oracle 和db2 等 ...
4 翻譯 EF基礎系列 EF架構
下面的圖形,展示了ef的總體架構 讓我們來分別看看,每個元件都是啥吧 edm entity data model 實體資料模型 edm 實體資料模型 包含三個主要的部分 概念模型,對映關係以及儲存模型。conceptual model 概念模型 概念模型包含模型類以及他們之間的關係。這個是和你的資料...
EF系列 ModelFirst實體優先
圖一 選擇控制台程式 圖二 選擇ado實體模型圖三 選擇ado實體模型 圖四 選擇模型型別 圖五 生成的介面 圖六 新增新實體圖七 新增新實體圖八 新增新實體 圖九 設定屬性 圖十 再建立乙個實體 圖十一 新增關係 圖十二 選擇合適的關係 圖十三 關係後的效果圖 圖十四 空白資料庫 圖十五 根據模型...