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