ADO.NET或Linq to SQL?

我正在建立一个论坛,它有4个表:用户,主题,评论,主题。

我建立了连接和页面..我开始使用ADO.net方式插入数据并选择数据..但后来我发现要进行更复杂的操作,我需要知道SQL。 所以我正在寻找另一种方式,我发现我可以打开Visual Studio 2010,将Linq添加到生成对象关系设计器的SQL文件中。 我读到了如何编写代码,我看到我只需要使用带有DataContext对象的using语句,并使用简单的代码来更新,添加,删除表中的行。

我想知道,使用一种查询方法有什么好处?

LINQ to SQL是ADO.NET系列技术的一部分。 它基于ADO.NET提供程序模型提供的服务。 因此,您可以将LINQ to SQL代码与现有ADO.NET应用程序混合,并将当前的ADO.NET解决方案迁移到LINQ to SQL。 下图提供了关系的高级视图。

在此处输入图像描述


请参阅以下内容:

ADO.NET和LINQ to SQL

LINQ的优点和缺点

LINQ to SQL在正常存储过程中的性能

LINQ-to-SQL和存储过程

ADO.NET为您提供低级别的查询控制。 如果查询速度变得非常重要,那么这就是您想要的。 如果速度不是很重要,但快速开发和对象关系模型是,LINQ to SQL是一个安全的选择。

我会建议Linq到SQL over ADO.NET。

  1. 发展很快,以ORM方式思考是很自然的。
  2. 如果您的查询太慢,使用.ExecuteQuery方法将允许您传入已优化的sql语句,就像您以ADO.NET方式执行它一样。 我在Linq to Sql上取得了很大的成功。

我还会看一下entity framework。 它使您可以更好地控制对象以及如何实现,使用和处理Linq。

LINQ to SQL非常棒,因为它可以为您生成大量的管道代码。 但它与直接使用ADO.NET / SQL基本相同。 要在LINQ to SQL中进行更复杂的数据操作,您必须知道如何在SQL中编写复杂的连接。

查看entity framework – 它可能会为您提供更高级别的抽象。

除了Entity Framework之外,您还可以查看NHibernate(另一个.net对象关系映射器)。 它的存在时间比EF长,所以它更成熟一点,但如果对你重要的话,微软不会开发它。

这两个是不同的抽象级别。 ADO.NET是.NET中最低级别的数据访问。 任何其他东西都将建立在它之上。

每个抽象都应该赋予您以较低级别概念为代价来表达更高级别概念的能力。

如果我听起来像一个哲学家那是因为它是星期五。