成都网站建设设计

将想法与焦点和您一起共享

LINQtoSQL事务模型有哪些

这篇文章主要介绍了LINQ to SQL事务模型有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

成都创新互联公司主要从事成都网站建设、网站设计、网页设计、企业做网站、公司建网站等业务。立足成都服务永定,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792

三种LINQ to SQL事务模型,分别是:
◆显式本地事务:调用 SubmitChanges 时,如果 Transaction 属性设置为事务,则在同一事务的上下文中执行 SubmitChanges 调用。成功执行事务后,要由您来提交或回滚事务。与事务对应的连接必须与用于构造 DataContext 的连接匹配。如果使用其他连接,则会引发异常。
◆显式可分发事务:可以在当前 Transaction 的作用域中调用 LINQ to SQL API(包括但不限于 SubmitChanges)。LINQ to SQL 检测到调用是在事务的作用域内,因而不会创建新的事务。在这种情况下,vbtecdlinq 还会避免关闭连接。您可以在此类事务的上下文中执行查询和 SubmitChanges 操作。
◆隐式事务:当您调用 SubmitChanges 时,LINQ to SQL 会检查此调用是否在 Transaction 的作用域内或者 Transaction 属性是否设置为由用户启动的本地事务。如果这两个事务它均未找到,则 LINQ to SQL 启动本地事务,并使用此事务执行所生成的 SQL 命令。当所有 SQL 命令均已成功执行完毕时,LINQ to SQL 提交本地事务并返回。

1.Implicit(隐式)

说明:这个例子在执行SubmitChanges()操作时,隐式地使用了事务。因为在更新2种产品的库存数量时,第二个产品库存数量为负数了,违反了服务器上的 CHECK 约束。这导致了更新产品全部失败了,系统回滚到这个操作的初始状态。

try  {  Product prod1 = db.Products.First(p => p.ProductID == 4);  Product prod2 = db.Products.First(p => p.ProductID == 5);  prod1.UnitsInStock -= 3;  prod2.UnitsInStock -= 5;//错误:库存数量的单位不能是负数  //要么全部成功要么全部失败  db.SubmitChanges();  }  catch (System.Data.SqlClient.SqlException e)  {  //执行异常处理  }

2.Explicit(显式)

说明:这个例子使用显式事务。通过在事务中加入对数据的读取以防止出现开放式并发异常,显式事务可以提供更多的保护。如同上一个查询中,更新 prod2 的 UnitsInStock 字段将使该字段为负值,而这违反了数据库中的 CHECK 约束。这导致更新这两个产品的事务失败,此时将回滚所有更改。以上介绍LINQ to SQL事务模型

using (TransactionScope ts = new TransactionScope())  {  try  {  Product prod1 = db.Products.First(p => p.ProductID == 4);  Product prod2 = db.Products.First(p => p.ProductID == 5);  prod1.UnitsInStock -= 3;  prod2.UnitsInStock -= 5;//错误:库存数量的单位不能是负数  db.SubmitChanges();  }  catch (System.Data.SqlClient.SqlException e)  {  //执行异常处理  }  }

感谢你能够认真阅读完这篇文章,希望小编分享的“LINQ to SQL事务模型有哪些”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!


分享文章:LINQtoSQL事务模型有哪些
新闻来源:http://chengdu.cdxwcx.cn/article/pgceij.html