C# 什么是SQL游标,如何将它们应用于简单的数据库表?

C# 什么是SQL游标,如何将它们应用于简单的数据库表?,c#,sql,sql-server,entity-framework,cursor,C#,Sql,Sql Server,Entity Framework,Cursor,我试图了解什么是游标,以及它们对我作为开发人员有什么用途 请解释它们是什么,以及它们通过使用带有IQueryable集合的say Entity Framework带来了什么好处 另外,假设我有一张名为Person的桌子。如何将游标应用于此表 create table Person ( ID int primary key, Name nvarchar, LastName nvarchar ); 游标允许逐个处理行。最好避免使用游标,因为与基于集合的查询操作相比,游标通常

我试图了解什么是游标,以及它们对我作为开发人员有什么用途

请解释它们是什么,以及它们通过使用带有
IQueryable
集合的say Entity Framework带来了什么好处

另外,假设我有一张名为Person的桌子。如何将游标应用于此表

create table Person
(
    ID int primary key,
    Name nvarchar,
    LastName nvarchar
);

游标允许逐个处理行。最好避免使用游标,因为与基于集合的查询操作相比,游标通常非常慢。下面是一些有关游标的文档,可以帮助您入门:

游标允许逐个处理行。最好避免使用游标,因为与基于集合的查询操作相比,游标通常非常慢。下面是一些有关游标的文档,可以帮助您入门:

一般来说,SQL Server数据库中的游标不是一个好主意™. 您正在为基于集合的处理而设计的系统中使用逐行逻辑和流程。任何逐行逻辑通常在调用应用程序中处理得更好。@JNK-逐行处理(通常)比在任何级别设置处理都差。如果您必须使用逐行逻辑,那么最好还是在服务器级别使用它(就总资源而言)。在大多数情况下,将处理分发给客户端确实是可取的,但这是一个一般的策略决策,与游标本身无关,还取决于客户端如何连接到数据库以及它们如何循环记录,他们需要做什么,需要什么样的锁定。@与大多数事情一样,这取决于应用程序,但我想不出有多少情况下,光标运行时最好为所有客户端锁定一个表,而不是向应用程序提供数据并继续为其余客户端提供服务。@Unreason:您能给出一个建议为单个客户端借用表的情况吗?@JNK-示例:客户端和服务器之间的链接速度较慢,并且受影响(或需要)的记录数相对较少您最好使用服务器端游标。或者,如果您的服务器资源比客户机资源便宜(这在今天只适用于某些瘦客户机或嵌入式设备上的客户机)。但无论如何,我同意,作为一项规则,应该尽一切努力首先避免逐行处理,如果必须循环,那么(在一般情况下)最好尝试将其卸载到客户端。通常SQL Server数据库中的游标是一个坏主意™. 您正在为基于集合的处理而设计的系统中使用逐行逻辑和流程。任何逐行逻辑通常在调用应用程序中处理得更好。@JNK-逐行处理(通常)比在任何级别设置处理都差。如果您必须使用逐行逻辑,那么最好还是在服务器级别使用它(就总资源而言)。在大多数情况下,将处理分发给客户端确实是可取的,但这是一个一般的策略决策,与游标本身无关,还取决于客户端如何连接到数据库以及它们如何循环记录,他们需要做什么,需要什么样的锁定。@与大多数事情一样,这取决于应用程序,但我想不出有多少情况下,光标运行时最好为所有客户端锁定一个表,而不是向应用程序提供数据并继续为其余客户端提供服务。@Unreason:您能给出一个建议为单个客户端借用表的情况吗?@JNK-示例:客户端和服务器之间的链接速度较慢,并且受影响(或需要)的记录数相对较少您最好使用服务器端游标。或者,如果您的服务器资源比客户机资源便宜(这在今天只适用于某些瘦客户机或嵌入式设备上的客户机)。但无论如何,我同意,作为一项规则,应该尽一切努力首先避免逐行处理,如果必须循环,那么(在一般情况下)最好尝试将其卸载到客户端。我找到了如何根据您提供的链接创建游标。为了完整起见,你能用一个使用游标的代码示例来编辑你的回答吗?这样当其他人发现这个问题时,他们就可以很容易地从中学习了。我根据你给出的链接找到了创建游标的方法。出于完整性的考虑,您能否用使用游标的代码示例编辑您的回答,以便其他人在发现此问题时可以轻松地从中学习?