EF框架step by step(1)—Database-First
EF框架step by step(2)—Model-First
EF框架step by step(3)—Code-First
通過項目,我們了解到EF框架有三種數據持久化的方式,也就是標題中我所提到的三種。那么這些方式之間又有什么聯系和區別呢?
先分別介紹一下這三種方法的聯系:
1.Database First是基於已存在的數據庫,利用某些工具(如VS提供的EF設計器)創建實體類,數據庫對象與實體類的匹配關系等,你也可以手動修改這些自動生成的代碼及匹配文件。也就是從一個數據庫開始,然后生成實體框架和相應代碼。
2.Model First 是先利用某些工具(如VS的EF設計器)設計出可視化的實體數據模型及他們之間的關系,然后再根據這些實體、關系去生成數據庫對象及相關代碼文件。
3.Code First 這種方式需要先寫一些代碼,如實體對象,數據關系等,然后根據已有的代碼描述,自動創建數據對象。但其實這種方法與Model First是非常類似的。我們自己寫的代碼,其實就是用代碼表示實體模型,而Model First是用可視化的方式描述了實體模型。
下面分析這三種方式的優缺點:
Database-First模式明顯性能會差點,但是它很適合初學者,或者是比較急的小型項目。還有一點,我們在做項目時可能不容易體會到它的好處,但如果做數據庫結構比較成熟穩定的產品時,我們可以很輕松的使用數據庫生成實體模型,從而實現快速開發。
Model-First模式優點是開發人員能夠在模型設計完成后,可以利用VS等工具快速生成數據庫腳本。缺點是設計模型時完全了解數據庫的結構,在模型中手動添加表關系,並且生成的腳本有點不簡潔。
Code-First模式優點是性能比較好,且代碼較少冗余。不過它的缺點也有很多,由於都是代碼編寫的,比如更新數據庫。
這三種方式各有利弊,使用過程中我們要按實際需求來選擇。這些工具的出現和使用,大大提高了開發人員的開發速度,使得數據庫、模型等出現了復用、擴展的可能,在應對變化方面也做了足夠的工作。這些工具所體現的服務思想更提醒我們要全方位去考慮問題,在產品中做好應對變化的措施。