目錄
1.前言
2.Code First默認連接
3.Code First指定數據庫
4.自定義連接
前言
在介紹EF的Code First模式時候,我們沒有修改任何配置,運行之后自動在LocalDb創建一個新的數據庫,並且創建對應的物理表,這個是如何實現的呢?
其實在我們安裝EF時,就會自動檢測當前系統包含的數據庫實例,如果SQL Express可用,則默認連接的數據庫就是SQL Express;如果LocalDb可用,則默認連接的數據庫就是LocalDb;如果兩者同時可用,則由於LocalDb是SQL Express是升級版,考慮向后兼容,默認使用Sql Express。當檢測到可用的數據庫之后,EF會在配置文件中添加對應的節點信息,如下圖,說明默認連接的是LocalDb。
Code First默認連接
在Code First模式下,我們不修改任何配置,直接運行,此時我們自定義的上下文調用的是無參的構造函數,自動生成的數據庫名稱由EF生成。
EF自動創建的數據庫名稱格式:項目名稱+自定義的上下文名稱,如下圖:
Code First指定數據庫
上述我們沒有修改任何配置,數據庫也是由EF自動創建,但這只適用於數據庫不存在的情況,如果數據庫已經存在,我們又改如何指定連接?
其實也非常簡單,我們同樣可以不修改任何配置,只需要在自定義的數據庫訪問上下文中實現一個有參數的構造函數,該參數即已存在的數據庫名稱,如下:
再次運行,查看數據庫,我們在EF.ExistDatabase下已經可以看到Blog表,如下:
自定義連接
到目前為止,我們只是修改了上下文的構造函數,沒有修改配置,不管是新建數據庫還是已有數據庫,一直使用的還是LocalDb,如果現在我們想完全自定義連接,又該如何實現呢?
根據我們以往的經驗,需要在配置文件中添加連接字符串,但是此時要注意,連接字符串Name必須和自定義的上下文名稱一致,原來EF自動生成的節點可以刪除。
修改前配置文件:
修改后配置文件:
運行后效果如下: