Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于这一点,C#3.0 Linq到SQL的等价物是什么?_Linq_Linq To Sql_Vb6_C# 3.0_Transactions - Fatal编程技术网

对于这一点,C#3.0 Linq到SQL的等价物是什么?

对于这一点,C#3.0 Linq到SQL的等价物是什么?,linq,linq-to-sql,vb6,c#-3.0,transactions,Linq,Linq To Sql,Vb6,C# 3.0,Transactions,需要转换的旧VB6代码: 'DB Connection Set Conn = New ADODB.Connection Conn.ConnectionString = sConn Conn.Open sConn Conn.BeginTrans 'Recordset Set rsPrice = New ADODB.Recordset rsPrice.CursorLocation = adUseClient rsPrice.CursorType = adOpenKeyset rsPrice.Loc

需要转换的旧VB6代码:

'DB Connection
Set Conn = New ADODB.Connection
Conn.ConnectionString = sConn
Conn.Open sConn
Conn.BeginTrans

'Recordset
Set rsPrice = New ADODB.Recordset
rsPrice.CursorLocation = adUseClient
rsPrice.CursorType = adOpenKeyset
rsPrice.LockType = adLockBatchOptimistic
rsPrice.ActiveConnection = Conn
在C#.NET3.5LINQtoSQL中,与此完全等价的是什么?我记得在某个地方读到,使用System.Transactions需要在后端安装MTS,但今天早上我的记忆很模糊

编辑:


我找不到与新API直接匹配的CursorLocation、CursorType和LockType,这是我困惑的根源。我熟悉TransactionScope,但我不知道TransactionScope的默认值是否可以接受,或者我是否因为信任他们而犯了一个愚蠢的错误。数据库是SQL Server 2005。

使用系统。事务需要MSDTC(Microsoft分布式事务控制器)而不是MTS

如果你能接受这个要求,那么你可以这样做:

using (System.Transactions.TransactionScope scope = new
System.Transactions.TransactionScope())
{
   try
   {
      //todo: do your linq to sql here

      //commit it, everything is successfully done!
      scope.Complete();
   }
}

使用System.Transactions需要MSDTC(Microsoft分布式事务控制器)而不是MTS

如果你能接受这个要求,那么你可以这样做:

using (System.Transactions.TransactionScope scope = new
System.Transactions.TransactionScope())
{
   try
   {
      //todo: do your linq to sql here

      //commit it, everything is successfully done!
      scope.Complete();
   }
}

DataContext附带一个接受连接的构造函数。我认为您可以像以前一样管理您的交易

如果提供打开的连接,DataContext将不会关闭它。因此,除非有充分的理由这样做,否则不要用开放连接实例化DataContext


此外,我们还使用了没有分布式事务协调器的System.Transactions。只有在事务覆盖多个数据库服务器(多个连接)时才需要它。

DataContext附带了一个接受连接的构造函数。我认为您可以像以前一样管理您的交易

如果提供打开的连接,DataContext将不会关闭它。因此,除非有充分的理由这样做,否则不要用开放连接实例化DataContext


此外,我们还使用了没有分布式事务协调器的System.Transactions。只有当事务覆盖多个数据库服务器(多个连接)时才需要它。

讽刺的是,VB6实际上有点可疑。将CursorLocation设置为客户端时,CursorType没有影响。它仅与服务器端游标相关

请参阅KB文章,以证明我不是在胡说八道


我的理解是LinqToSQL请求将所有数据带到客户端。它们根本不使用服务器端游标。因此,LINQ的行为应该与VB6代码相同。您可能只想了解ADO中有一种方法可以控制乐观锁定如何检测更新冲突。您可以使用时间戳、更改的字段或所有字段。我不确定LINQ如何处理更新冲突。

讽刺的是,您的VB6实际上有点可疑。将CursorLocation设置为客户端时,CursorType没有影响。它仅与服务器端游标相关

请参阅KB文章,以证明我不是在胡说八道


我的理解是LinqToSQL请求将所有数据带到客户端。它们根本不使用服务器端游标。因此,LINQ的行为应该与VB6代码相同。您可能只想了解ADO中有一种方法可以控制乐观锁定如何检测更新冲突。您可以使用时间戳、更改的字段或所有字段。我不确定LINQ如何处理更新冲突。

这主要取决于您尝试执行的事务类型。不幸的是,你没有给出足够的细节来解释你想要实现的目标。如果您在VisualStudio中创建一个新的控制台项目,并向其中添加一个Linq To Sql文件,然后将一些表从数据库拖到设计器中,那么您应该有一个良好的开端。我们在没有运行MTS的情况下使用事务,但我们使用MS SQL Server。事务是内置的。NetApp是否正在寻找transactionscope?具体来说,我正在寻找将游标位置、游标类型和锁定类型与新的API相匹配。这可能是一个老鼠洞,因为默认值可能很好。我只是想避免一个愚蠢的错误。这主要取决于你试图做的交易类型。不幸的是,你没有给出足够的细节来解释你想要实现的目标。如果您在VisualStudio中创建一个新的控制台项目,并向其中添加一个Linq To Sql文件,然后将一些表从数据库拖到设计器中,那么您应该有一个良好的开端。我们在没有运行MTS的情况下使用事务,但我们使用MS SQL Server。事务是内置的。NetApp是否正在寻找transactionscope?具体来说,我正在寻找将游标位置、游标类型和锁定类型与新的API相匹配。这可能是一个老鼠洞,因为默认值可能很好。我只是想避免一个愚蠢的错误。