EF6學習筆記十五 除錯EF框架原始碼

2022-02-23 15:45:39 字數 2155 閱讀 1105

今天繼續學習ef,但是看來看去,實在是感覺不爽啊,因為你不知道原始碼裡面到底是什麼回事,我只能去猜去想象,要是有原始碼給我看幾個單詞也好啊。

建立自己的控制台專案,引入兩個程式集,並且控制台程式新增對這兩個程式集的引用, 把這兩個程式集的強簽名去掉,重新生成解決方案

這裡要注意,我們只引入了entityframework和entityframework.sqlserver,如果我們想要用資料遷移是不行的,可能要還要引入其他的程式集,我做了,沒有成功。

所以,我們只能自己手動地去建立資料庫,並且資料模型的配置也要寫,並且你要保證你的配置和手寫的資料庫是完全匹配的。

你可以在另乙個專案中把model、配置都寫好,測試沒問題,拿到這個專案中複製。

我的三個model

//  基類

public class baseentity

public string id

public datetime addtime

}// 產品類

public class order : baseentity

public string description

public virtual icollectionproducts

}// 產品類

public class product : baseentity

public decimal price

public string unit

public string fk_orderid

public virtual order order

}

配置如下

public class efdbcontext:dbcontext

public dbsetorders

public dbsetproducts

protected override void onmodelcreating(dbmodelbuilder modelbuilder)

}

查詢資料,列印看看

class program}}

報錯,找不到程式集

我們把原始碼中的這裡改成null

然後列印資料,出來了

這裡要注意乙個問題,efdbcontext中要一次性寫好,不能執行了專案,再對efdbcontext進行改動,這樣他會說你的檔案改動要執行資料遷移,更新資料庫。但是我們剛剛就強調了,只是引入了兩個程式集,無法提供資料遷移的功能

我開始就是這樣,efdbcontext中的配置沒有寫,可能是ef無法匹配到資料庫,一直進行它的預設連線,即使我給他指定了連線字串(我要求他連線到_201901202.efdbcontext這個資料庫,但是我的配置和資料不匹配,他就連線預設資料庫:命名空間+上下文類名)

然後我改好efdbcontext,以為這下終於萬無一失,但是他說支援「efdbcontext」上下文的模型發生了更改。考慮使用**優先遷移來更新資料庫。可是我遷移用不了啊!

所以我又寫了乙個efdbcontext2,把**複製過來,這樣終於行了,連線到指定的資料來源了。

切換成EF6框架

之前用的ef5框架,現在想換成ef6,可是問題到處都是。解決方案 第一步 建立空控制台程式 第二步 在 工具 庫程式包管理器 程式包管理器控制台 這裡 預設專案,在pm 後 輸入 install package entityframework version 6.0.0 install packag...

EF 6 新特性五

腳手架可為空的引用型別 ef core 6.0 改進了現有資料庫的腳手架。在專案中啟用可空引用型別 nrt 時,ef core 會自動使用 nrt 構建 dbcontext 和實體型別。有示例表 create table posts id int not null identity,name nva...

EF6學習筆記二十 簡單日誌記錄

我們來看看簡單日誌記錄。用ef,畢竟最終還是對資料庫的操作,那麼怎麼清楚地知道ef執行的sql語句是什麼樣的?ef提供了日誌記錄功能 var res ctx.commodities.orderby x x.price skip 1 take 1 console.writeline res view ...