你可以这样简单理解它们之间的区别:
Ado.net Entity Framework 是 LINQ to SQL的升级版
LINQ to SQL是将数据库原封不动地映射成模型,而Ado.net Entity Framework可以进行更高层次的映射和自定义,比如这样两个表:
学生表
ID,名称,所在学校ID
学校表
ID,名称
学生表的 所在学校ID 与 学校表的 ID 相关联
LINQ to SQL经过映射后的模型中,学生实体的“所在学校ID”属性就是一个ID号,而Ado.net Entity Framework中该属性则是一个学校对象,也就是说Ado.net Entity Framework更接近于面向对象数据库的使用方法。
LINQ to sql虽然将数据库映射成模型,但是当我们在使用linq to sql的时候并没有彻底的隔离开数据库与程序的关系。而AEF则是对EDM的模型操作,是程序人员可以彻底的不去关注数据库领域的相关知识,还有一点很重要的就是由于我们是对EDM模型操作,所以我们的程序只要写一次就可以适应不同的数据库,当然这个的前提是不同的数据库要提供不同的Provider。
可以看下这文:
其实很多细节挺不一样的,用惯了LINQ to SQL后再用EF很不习惯。。。
LINQ to SQL让我们自已写的数据层基本都报废了,而EF更像是直接在C#操作数据库转化的数据对象。
LINQ TO SQL性能很差,直接用Ado.net性能好点