这些ORM只是具有不同名称的ADO.NET吗?

时间:2018-09-28 13:35:23

标签: entity-framework ado.net

我一直在阅读Entity Framework的替代方法,到目前为止,我已经见过Dapper,OrmLite,NPoco,PetaPoco和Massive。

它们看起来都像ADO.NET,但对我来说却是不同的名称。它们通过执行以纯文本形式指定的SQL查询来进行操作,就像ADO.NET一样。

我敢肯定,如果您深入研究 ,它们会有一些的区别,但我是否缺少某些内容,或者它们只是略有不同来自ADO.NET?

1 个答案:

答案 0 :(得分:0)

您的问题开始于谈论实体框架,但随后进入ADO.NET。那些不是同一回事。

实体框架是一个ORM(对象关系映射)框架,就像您在第一段中提到的其他软件包一样。没错,它们实际上都在做相同的事情:它们使您可以通过使用强类型的C#对象而不是像DataTableDataRow这样的更抽象的概念来从数据库读取和写入数据。每种语法都有不同,您可能会发现其中一些语法比其他语法更容易使用。您可能还对查看针对不同框架的某些速度基准测试感兴趣。

还需要注意的是,ORM并不总是要求您编写纯文本SQL。他们照顾自己产生。例如,在PetaPoco和NPoco中可以使用类似的方法:

public class Holiday
{
    property DateTime Date { get; set; }
    property String Name { get; set; }
}

using (var db = new Database("MyDB"))
{
    // No SQL here -- it gets generated for you
    IEnumerable<Holiday> holidays = db.Query<Holiday>("");
}

ADO.NET是.NET使用的基础数据库访问技术,因此与数据库对话的所有内容都将在某个时候使用它。所有这些ORM都依赖ADO.NET。