描述剛剛使用EF,還沒搞明白,遇到下麵問題,記錄一下。都說EF好用,一直也沒用過,以前寫代碼都是ADO.NET,寫起來費時費力還沒什麼大進展,如果能把這些事簡化一下把精力放到邏輯或者更有用的地方豈不是更好。所以想使用EF。Code First,從字面的意思來看是先有代碼後有資料庫,通過Model來創...
描述
剛剛使用EF,還沒搞明白,遇到下麵問題,記錄一下。
都說EF好用,一直也沒用過,以前寫代碼都是ADO.NET,寫起來費時費力還沒什麼大進展,如果能把這些事簡化一下把精力放到邏輯或者更有用的地方豈不是更好。所以想使用EF。Code First,從字面的意思來看是先有代碼後有資料庫,通過Model來創建資料庫,好像只能是通過Model來生成資料庫,至少我接觸2天以來是這樣,項目已經開始一段時間了,資料庫已經有一定的數據,雖然是測試數據,但也不想刪掉,從新添加數據也是很煩人的事。想找到一種能夠不刪除數據表還能使用Code First的方法。
Migrations
這個工具很不錯但Model有變化的時候可以使用命令直接更新到資料庫中,網上找了好長時間都是從Model更新到資料庫,沒提到怎麼將現有資料庫中的表加入都這個更新中。Google了一天終於看到了方法,其實Migrations為我們想到了。
Migrations使用方法:https://msdn.microsoft.com/zh-cn/data/jj591621
將現有表加入到Migrations中的方法:https://channel9.msdn.com/Blogs/EF/Migrations-Existing-Databases
過程
其實很簡單。
1、使用ADO.NET實例數據模型工具,來自資料庫的Code First,將需要的表的Model生成到項目中,這個時候必要的Model模型已經出來了。
2、我做的時候把生成模型的DbContext刪除掉了,用我自己的DbContext,畢竟有那麼多的DbContext連接的功能還是一樣的看起來很礙眼,把生成的DbSet複製到自己的DbContext中。
3、使用Add-Migrations -IgnoreChanges,我感覺這裡才是重點,如果沒啟用Migrations啟用一下,Enable-Migrations上邊有使用方法。
4、Update-Database這個時候應該就可以了。
5、如果更新Model,Add-Migrations命令,再Update-Database就可以了。