对于这一点,C#3.0 Linq到SQL的等价物是什么?
需要转换的旧VB6代码:对于这一点,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
'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相匹配。这可能是一个老鼠洞,因为默认值可能很好。我只是想避免一个愚蠢的错误。