https://www.cnblogs.com/wujingtao/p/5401113.html
不得不说EF在国内实在是太小众,相关的技术文章真实屈指可数,而且很多文章都很旧了,里面使用的版本跟如今的EF6差别还是比较大。我刚开始弄这个的时候真是绕了不少弯路。
学习EF还是需要一些条件,使用EF并不意味着你就可以完全不跟数据库打交道了,要学好EF,数据库中的什么主键、外键、索引、SQL等你还是要懂,另外EF中将大量使用LINQ来进行数据查询,数据模型中还将涉及到特性与泛型,所以对于C#的基础要求还比较高。
在我看来EF并不适合初学者使用,虽然微软最初设计EF的初衷就是让程序员摆脱SQL,即使不懂SQL也能完成对数据库的操作,不过从最终的效果来看,EF不仅没有使得问题变得简单反倒更复杂了。为了不写SQL,微软创建了一种和SQL长得非常像的LINQ,为了能让EF创建数据表,微软又将数据库中的各种约束、数据类型封装成了一个个特性。所以如果没有良好的数据库基础你是根本学不了的。
由于EF是通过代码来生成SQL供数据库执行,所以不管怎么优化,相对于原生SQL,性能肯定都比较差。EF在中小型的项目中可能还行,在大型项目,特别是高并发的项目中使用EF,我估计用不了多久数据库就会崩溃。
以上说了EF的那么多的不是,是不是EF一点用处都没有了呢?EF最大的优点就是快,这个快是指开发迅速,只要你熟悉了EF,只需要写很少的代码,就能完成以前需要写很多行代码才能完成的数据库交互。所以使用EF来应付客户就再适合不过了,如果你要我在我自己的项目中使用,我是绝对不会用这东西的。
PS:如果想不牺牲性能又要保持EF开发的快捷,可以尝试一下如今很火的NOSQL数据库,例如Mongodb。我觉得如今NOSQL数据库的出现,使得EF的这类型的框架,真的没有更多存在的价值了。
书籍推荐
如今关于EF6的书真是少,只有一本叫Entity Framework 6 Recipes。不过没有中文版,如果想系统学习的话建议看看这位仁兄的文章《Entity Framework 6 Recipes》中文翻译系列。