ADO.NET 还是 Linq to SQL?

发布于 2024-11-07 06:21:52 字数 295 浏览 1 评论 0原文

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

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

我想知道,使用一种查询方式相对于另一种查询方式有什么优势?

I am building a forum, and it has got 4 tables: Users, Threads, Comments, Topics.

I established the connection and the pages.. I started using the ADO.net way to insert data and select data..but then I found that to make more complex manipulations i need to know SQL. So I was looking for another way, and I found that I can open Visual Studio 2010, add Linq to SQL file that produced object relational designer. I read about how to write code, and I saw that I simply need to use a using statement with DataContext object with a simple code to update, add, delete rows in the tables.

I wanted to know, what are the advantages of using one way of querying over another?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

心的位置 2024-11-14 06:21:52

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

不过,我会推荐 Linq to SQL over ADO.NET。

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

我还会看看实体框架。与 Linq 相比,它使您能够更好地控制对象以及它们的实现、使用和处理方式。

ADO.NET gives you low level control over your queries. If query speed is going to be of importance, this is where you want to be. If you speed is not very important, but rapid development and an Object Relational Model is, LINQ to SQL is a safe bet.

I would recommend Linq to SQL over ADO.NET though.

  1. Development is rapid and thinking in an ORM way is natural.
  2. If your queries are too slow, using the .ExecuteQuery method will allow you to pass in a sql statement that you have optimized as if you were doing it in the ADO.NET way. I have had much success with Linq to Sql.

Also I would look at Entity Framework. It gives you more control over your objects and how they are implemented, used and handled than Linq.

颜漓半夏 2024-11-14 06:21:52

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 和存储过程

LINQ to SQL is part of the ADO.NET family of technologies. It is based on services provided by the ADO.NET provider model. You can therefore mix LINQ to SQL code with existing ADO.NET applications and migrate current ADO.NET solutions to LINQ to SQL. The following illustration provides a high-level view of the relationship.

enter image description here


Refer to the following:

ADO.NET and LINQ to SQL

Advantages & Disadvantages of LINQ

Performance of LINQ to SQL over Normal Stored procedure

LINQ-to-SQL and Stored Procedures

不疑不惑不回忆 2024-11-14 06:21:52

LINQ to SQL 的伟大之处在于它可以为您生成大量的管道代码。但它与直接使用 ADO.NET/SQL 基本相同。要在 LINQ to SQL 中执行更复杂的数据操作,您必须知道如何在 LINQ 中编写复杂的联接,就像在 SQL 中一样。

查看实体框架 - 它可能会为您提供您正在寻找的更高级别的抽象。

LINQ to SQL is great in that it generates alot of the plumbing code for you. But it is basically the same as using straight up ADO.NET/SQL. To do more complex data manipulation in LINQ to SQL you have to know how write complex joins in LINQ just as you would in SQL.

Look into Entity Framework - it might give you a higher level of abstraction that you are looking for.

送你一个梦 2024-11-14 06:21:52

两者处于不同的抽象级别。 ADO.NET 是.NET 中最低级别的数据访问。其他任何事情都将建立在它的基础上。

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

如果我听起来像个哲学家,那是因为今天是星期五。

The two are on different abstraction levels. ADO.NET is the lowest level of data access in .NET. Anything else will build upon it.

Every abstraction should give you power to express higher-level concepts at the cost of lower level concepts.

If I sound like a philosopher it's because it's Friday.

薔薇婲 2024-11-14 06:21:52

除了实体框架之外,您还可以看看 NHibernate(另一个 .net 对象关系映射器)。它比 EF 存在的时间更长,因此更成熟一些,但如果这对您很重要的话,它不是由 Microsoft 开发的。

In addition to Entity Framework, you can take a look at NHibernate (another .net Object Relational Mapper). It's been around longer than EF so it's a bit more mature, but it isn't developed by Microsoft if that matters to you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文