Code First, Database First, Same Time區別

來源:互聯網
上載者:User

標籤:blog   http   使用   os   檔案   io   資料   html   

 

Code First, Database First, Same Time是我理解的asp.net mvc中用到的三種model與資料庫對應的方式,肯定是不全面的,理解也有些狹隘,今後隨著自己的理解加深再來修改這篇文章吧。這三種方式在格鬥人網 (www.helpqy.com)中有應用,這裡來自我總結一下:

 

【Code First】

即先寫好模型類,然後通過EF自動產生資料庫及相應的表。使用MVC自動建立的模板頁時,實際上就使用了Code First。當你開啟建立工程的時候可以看到,是沒有資料庫存在的,當你在啟動並執行頁面中註冊新帳號時,系統會自動根據web.config中的配置、ApplicationDbContext中設定的連接字串以及模型類來產生資料庫和表。至於具體怎麼產生的,在我的另外一篇文章裡【將SQL SERVER資料庫改成MySql】有具體的實現代碼,實際上是通過資料庫的Initilizer類來建立資料庫的。

通過這種方式建立的資料庫,在模型類中的成員被修改後,還可以通過VS的"封裝管理員控制台"來同步到資料庫,只需要採用資料移轉中的Enable-Migrations, Add-Migrations "XXX"和Update-Database三個步驟即可實現資料庫和模型類的同步。

 

【Database First】

即先建立好資料庫和表,然後建立ADO.NET實體資料模型檔案edmx,根據VS的引導,選擇已經建立好的資料庫的某一個表作為資料來源,模型類會被自動建立出來。

 

【Same Time】

Same Time  是我自己想出的詞兒,很不專業,就是自己的一個總結。即在代碼側,模型中的ApplicationUser已經建立好了,想另外增加其它的類以及在已有資料庫中建立對應的表,這時需要注意一下幾點:

    (1) 在類的頂部加上[Table(‘"xxxx表名")]以讓該類與表相關。

    (2) 在主鍵欄位前面加上[Key]屬性。

    (3) 如果表中存在多個主鍵,在主鍵上除開添加[Key]屬性以外,還需要添加[Column(Order = XX列號)]屬性,以表明不同主鍵的順序。否則會出現“無法確定組合主鍵排序”的錯誤。

    (4) 新增加的類可以不用放在ApplicationDbContext中,可以建立DataContext來建立Context模型,然後通過linq to sql來訪問,但是在實際部署時,這種方式會出現存取違規錯誤,因此還是建議在ApplicationDbContext中,定義該建立模型類的DbSet,然後通過ApplicationDbContext這個統一的入口來訪問。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.