1.  Entity Framework是Microsoft的ORM框架,隨著 Entity Framework 不斷的完善強(qiáng)化已經(jīng)到達(dá)了EF 6.0+ 還是非常的完善的,目前使用的比例相對(duì)于其他ORM 的框架還是比較多的。例如有我們目前使用較多的是EF和Drapper 和SQL Sugar 以及NHibernate 當(dāng)然NHibernate 我使用的不多。當(dāng)然EF確實(shí)使用起來非常的方便開發(fā)的速度是比較快的,EF 畢竟在Microsoft 在.NET 體系中已經(jīng)推出了多年了,無(wú)論是成熟度還是其中的性能以及優(yōu)化的程度都得到了很好很大的改善, 所以還是非常值得我們學(xué)習(xí)使用,當(dāng)然我這個(gè)不是吹噓EF 好,而且有的朋友也說了 EF 性能不好效率不高,我想詢問一下 針對(duì)于這些問題你想過如何進(jìn)行優(yōu)化 以及改進(jìn)沒有其實(shí)目前改進(jìn)的方案網(wǎng)上還是非常多的,當(dāng)然也有很多開發(fā)者為EF提供了擴(kuò)展功能,如Entity Framework  Extended 等里面封裝的一些方法就是非常好使用的。而且作為.NET 開發(fā)者來說項(xiàng)目的通用性也是非常的強(qiáng)大的,資料也是非常多的,Microsoft在這塊的更新力度也很給力。Entity Framework  提供了三種開發(fā)模式,Code Frist,Database-First,Model-First。 目前采用Code Frist 的比較多一些 ,但是我建議大家可以使用DB Frist  簡(jiǎn)單好用。操作方便。當(dāng)然你如果你喜歡Code Frist 也是擁有自己的好處,反正三者之間 都是相通的,沒有什么難點(diǎn)的。都是ORM 之間的轉(zhuǎn)化。

Database-First模式明顯性能會(huì)差點(diǎn),非常的適合初學(xué)者,或者是比較急的中小型項(xiàng)目一般情況下使用還是足夠的。(數(shù)據(jù)量200W左右還是足夠應(yīng)付的)。

Model-First模式優(yōu)點(diǎn)是開發(fā)人員能夠在設(shè)計(jì)模型時(shí)完全了解數(shù)據(jù)庫(kù)的結(jié)構(gòu)以及表格之間的關(guān)系,但是缺點(diǎn)是在模型設(shè)計(jì)完后,還是需要去手動(dòng)創(chuàng)建數(shù)據(jù)庫(kù),而且生成的腳本有點(diǎn)不簡(jiǎn)潔。

Code-First模式有點(diǎn)不用說了,就是上面兩個(gè)模式的缺點(diǎn)。缺點(diǎn)應(yīng)該也是有很多的,比如更新數(shù)據(jù)庫(kù)。涉及到數(shù)據(jù)的遷移這一塊。就讓大多數(shù)人比較頭疼。目前解決的方案比較多。

這個(gè)這個(gè)只是我個(gè)人的意見和看法 。所以關(guān)于這個(gè)EF 的開發(fā)模式的如何的使用,決定權(quán)利在于你的項(xiàng)目和數(shù)據(jù)庫(kù)數(shù)據(jù)量大小和你公司的目前存在的框架。

2. 關(guān)于我個(gè)人封裝的通用的EF 比較簡(jiǎn)單好用就是正對(duì)于數(shù)據(jù)庫(kù)的CRUD ,而且非常適合于單個(gè)數(shù)據(jù)庫(kù)的讀寫的操作。 當(dāng)然你也可以進(jìn)行對(duì)于數(shù)據(jù)庫(kù)進(jìn)行讀寫分離的操作,建立相互對(duì)應(yīng)的數(shù)據(jù)庫(kù)的集群,那么其實(shí)說白了 EF本身就是一個(gè)對(duì)于CRUD 的讀寫的操作。使用過EF的人知道,EF提供訪問數(shù)據(jù)庫(kù)的是 DbContext 這個(gè)對(duì)象,所以想實(shí)現(xiàn)讀寫分離的就很簡(jiǎn)單了,只要在程序中使用兩個(gè)不同的DbContext對(duì)象,一個(gè)負(fù)責(zé)讀,一個(gè)負(fù)責(zé)寫就好了。當(dāng)然你也可以進(jìn)行使用相對(duì)應(yīng)的工廠化模式進(jìn)行 讀寫分離的操作也可以通過 常用的反射來進(jìn)行讀寫的操作,決定權(quán)取決在你的手上。所以我們?cè)谑褂闷渲械淖x寫分離的時(shí)候你只管進(jìn)行對(duì)于 DbContext   進(jìn)行操作就是了 建立相互對(duì)于的讀寫的類就可以了。 一般讀寫進(jìn)行分離的都是進(jìn)行同步于主庫(kù)的。因?yàn)橐话闱闆r下的讀寫的分離 都是一主多從庫(kù)的模式。

3.在使用這個(gè)通用EF CRUD 類的時(shí)候需要 進(jìn)行添加EntityFramework.Extended.6.1.0.168    EntityFramework 6.1.3  兩個(gè)程序集 。當(dāng)然 我這里使用的是MySQL 數(shù)據(jù)庫(kù) 所以還添加MySQL Data Entity 的等等。添加以上引用的程序集 就可以了。然后還需要添加相對(duì)應(yīng)的Transaction的程序集,這個(gè)時(shí)候有的朋友就問了 添加Transaction做什么 我的目的就是通過建立想對(duì)應(yīng)的事