第一次EF使用經(jīng)歷
我EF用的比較晚,上來(lái)就是6.1.3.
所以這里只寫這個(gè)版本的EF.
可配置項(xiàng)
配置在web.config中的數(shù)據(jù)庫(kù)連接串.
圈子中的EF,配置項(xiàng)在Yingqi.Infrastructure的persistence文件夾下:
Configuration類,配置Developing方法的返回值將決定是否開(kāi)啟Develop模式.
AutoMigration類,配置是否開(kāi)啟自動(dòng)遷移和是否允許遷移過(guò)程中數(shù)據(jù)損失.
實(shí)體注冊(cè)
圈子中的數(shù)據(jù)實(shí)體綁定是重寫了DbContext的OnModelCreating方法,直接在這里通過(guò)IOC容器將所有的
繼承自IModelProvider接口的實(shí)體類一次注入.
所以,這里強(qiáng)行DDD導(dǎo)致我無(wú)法將自動(dòng)遷移改造為手動(dòng)遷移,除非做出巨大的改動(dòng).
數(shù)據(jù)遷移
quanzi中,只有自動(dòng)遷移的模式.
在這個(gè)模式下,請(qǐng)一定要按照Base模型考慮清楚具體的數(shù)據(jù)模型改變.
一定要人工預(yù)估清楚具體的更改,否則自動(dòng)遷移會(huì)給你帶來(lái)巨大麻煩.
然后,按照數(shù)據(jù)庫(kù)的改變,編寫對(duì)應(yīng)的sql,并在正式庫(kù)上執(zhí)行.
在后續(xù)項(xiàng)目中使用EF
可配置項(xiàng)
配置在web.config中的數(shù)據(jù)庫(kù)連接串.
以及配置Migrations文件夾下的Configration.
就不再采用自動(dòng)遷移了.
實(shí)體注冊(cè)
直接在DbContext類中,寫下具體的DbSet<TEntity> EntityName{get;set;},所有數(shù)據(jù)表都寫在這里.
這里改變了想法,放棄了DDD中的持久化無(wú)關(guān)性,從而認(rèn)為,一定會(huì)有一個(gè)層面,知道所有的數(shù)據(jù)庫(kù)細(xì)節(jié).
數(shù)據(jù)遷移
采用手工遷移方案.
主要常用的手工遷移命令如下:
首先,添加遷移文件夾以及配置類
然后,在程序包管理控制臺(tái) 輸入Add-Migration,參數(shù)有很多,主要包括程序集名稱,數(shù)據(jù)庫(kù)連接串,是否強(qiáng)制.詳見(jiàn)MSDN
運(yùn)行成功之后會(huì)生成一個(gè)遷移歷史文件.里面有C#代碼描述的數(shù)據(jù)庫(kù)變化.
之后輸入 Update-Database ,具體參數(shù)跟Add-Migration類似.可以輸入-script,生成腳本,放到遠(yuǎn)程(生產(chǎn)環(huán)境)執(zhí)行.不輸入則修改當(dāng)前連接串