步步为营VS 2008 + .NET 3.5(12) - DLINQ(LINQ to SQL)之事务处理和并发处理

机械拆装-基于Unity-总体设计 建立一个机械装配的场景 阅读详情
[索引页]
[源码下载]


步步为营VS 2008 + .NET 3.5(12) - DLINQ(LINQ to SQL)之事务处理和并发处理


作者: webabcd


介绍
以Northwind为 示例数据库,DLINQ(LINQ to SQL)之 事务处理和并发处理


示例
TransactionAndConcurrency.aspx
<% @ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="TransactionAndConcurrency.aspx.cs"
    Inherits
="LINQ_DLINQ_TransactionAndConcurrency" Title="事务处理和并发处理" 
%>

< asp:Content  ID ="Content1"  ContentPlaceHolderID ="head"  runat ="Server" >
</ asp:Content >
< asp:Content  ID ="Content2"  ContentPlaceHolderID ="ContentPlaceHolder1"  runat ="Server" >
    事务处理和并发处理详见:TransactionAndConcurrency.aspx.cs
</ asp:Content >

TransactionAndConcurrency.aspx.cs
using  System;
using  System.Data;
using  System.Configuration;
using  System.Collections;
using  System.Linq;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;
using  System.Xml.Linq;

using  DAL;
using  System.Transactions;

public   partial   class  LINQ_DLINQ_TransactionAndConcurrency : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
// 事务处理(DataContext.SubmitChanges()会做默认的事务处理)
        TransactionDemo1();

        
// 事务处理(用DataContext.Connection.BeginTransaction()的方式做事务处理)
        TransactionDemo2();

        
// 事务处理
        TransactionDemo3();

        
// 并发处理
        Concurrency();
    }


    
/// <summary>
    
/// 事务处理(DataContext.SubmitChanges()会做默认的事务处理)
    
/// </summary>

    private void TransactionDemo1()
    
{
        
try
        
{
            NorthwindDataContext ctx 
= new NorthwindDataContext();

            ctx.Categories.InsertOnSubmit(
new Categories { CategoryName = "test", Description = "test" });
            ctx.Categories.InsertOnSubmit(
new Categories { CategoryID = 1 });

            ctx.SubmitChanges();
        }

        
catch
        
{ }
    }


    
/// <summary>
    
/// 事务处理(用DataContext.Connection.BeginTransaction()的方式做事务处理)
    
/// </summary>

    private void TransactionDemo2()
    
{
        
int? categoryId = null;

        NorthwindDataContext ctx 
= new NorthwindDataContext();

        
if (ctx.Connection.State != ConnectionState.Open)
        
{
            ctx.Connection.Open();
        }


        System.Data.Common.DbTransaction tran 
= ctx.Connection.BeginTransaction();
        ctx.Transaction 
= tran;

        
try
        
{
            ctx.AddCategory(
"test", "test", ref categoryId);
            ctx.DeleteCategory(
1);

            tran.Commit();
        }

        
catch
        
{
            tran.Rollback();
        }

    }


    
/// <summary>
    
/// 事务处理(用System.Transactions.TransactionScope做事务处理)
    
/// </summary>

    private void TransactionDemo3()
    
{
        
int? categoryId = null;

        
using (TransactionScope tc = new TransactionScope())
        
{
            
try
            
{
                NorthwindDataContext ctx 
= new NorthwindDataContext();
                
                ctx.AddCategory(
"test", "test", ref categoryId);
                ctx.DeleteCategory(
1);

                tc.Complete();
            }

            
catch
            
{ }
        }

    }


    
/// <summary>
    
/// 并发处理
    
/// </summary>

    private void Concurrency()
    
{
        
// 修改字段的UpdateCheck为Never,可在对象关系设计器(Object Relational Designer)中修改
        
// [Column(Storage="_UnitPrice", DbType="Money")]
        
// [Column(Storage="_UnitPrice", DbType="Money", UpdateCheck=UpdateCheck.Never)]

        NorthwindDataContext ctx 
= new NorthwindDataContext();

        var products 
= ctx.Products;

        
foreach (var p in products)
        
{
            p.UnitPrice 
++;
        }


        
try
        
{
            
// 表示即使发生冲突也要继续
            ctx.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);
        }

        
catch (System.Data.Linq.ChangeConflictException e)
        
{
            
foreach (System.Data.Linq.ObjectChangeConflict occ in ctx.ChangeConflicts)
            
{
                Products p 
= (Products)occ.Object;

                
// 以当前客户端中的值为准
                occ.Resolve(System.Data.Linq.RefreshMode.OverwriteCurrentValues);

                
// 以当前数据库中的值为准
                occ.Resolve(System.Data.Linq.RefreshMode.KeepCurrentValues);

                
// 如果数据库中的值没有发生变化,则以当前客户端中的值为准。否则,则以当前数据库中的值为准
                occ.Resolve(System.Data.Linq.RefreshMode.KeepChanges);

                
foreach (System.Data.Linq.MemberChangeConflict mcc in occ.MemberConflicts)
                
{
                    
// 当前客户端中的值
                    string currentValue = mcc.CurrentValue.ToString();
                    
                    
// 原来数据库中的值
                    string originalValue = mcc.OriginalValue.ToString();
                    
                    
// 当前数据库中的值
                    string databaseValue = mcc.DatabaseValue.ToString();

                    
// 以当前客户端中的值为准
                    mcc.Resolve(System.Data.Linq.RefreshMode.OverwriteCurrentValues);

                    
// 以当前数据库中的值为准
                    mcc.Resolve(System.Data.Linq.RefreshMode.KeepCurrentValues);
                    
                    
// 如果数据库中的值没有发生变化,则以当前客户端中的值为准。否则,则以当前数据库中的值为准
                    mcc.Resolve(System.Data.Linq.RefreshMode.KeepChanges);
                }

            }


        }


        
// 表示只要发生冲突就不再继续
        ctx.SubmitChanges(System.Data.Linq.ConflictMode.FailOnFirstConflict); 
        
        
// ctx.SubmitChanges();
    }

}



OK
[源码下载]
自监督学习原理与代码实战案例讲解 自监督学习原理与代码实战案例讲解 作者:禅与计算机程序设计艺术 1. 背景介绍 1.1 自监督学习的起源与发展 1.1.1 监督学习的局限性 阅读详情

相关推荐

解决/usr/lib64/libstdc++.so.6和/lib64/libc.so.6版本过低问题

在CentOS7.0中编译好MySQL5.7.14之后,然后在CentOS6.5中初始化MySQL,执行:/usr/local/mysql/bin/mysqld --version出现如下问题:./bin/mysqld: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./bin/mysqld)

poxiaonie的博客 2万+

.NET 3.5-4.0 并行计算的支持

在以往的计算机发展历史中,硬件技术的发展,特别是CPU频率的不断提高,总是给软件带来更强的性能提升。从386到586,从赛扬到奔腾,每次CPU频率的提升,都带来软件性能的大幅提升,而软件无需做任何变动。如果有客户抱怨你的软件性能不佳,我们无需着急,只需要升级到更高频率的CPU就可以了。当单核CPU的频率发展到3G之后,再往上发展就遇到了技术瓶颈,单核心CPU的发展已经到达一个极限,硬件厂

shanyou的专栏 2050

Simpack实战:5分钟搞定轨道车辆车轮不圆的3种定义方法(附详细参数设置)

本文详细介绍了在Simpack中定义轨道车辆车轮不圆的3种高效方法:Radius deviations、Fourier coefficients和Harmonic function,并提供了详细的参数设置指南。通过实战案例和参数优化技巧,帮助工程师快速掌握车轮不圆度的定义与仿真,提升轨道车辆动力学分析的准确性和效率。

weixin_29292535的博客 201

ASP.NET 3.5(C#)系列3-新一代事务机制II-并发事务级别

<br />事务的并发在事物中有着重要作用,在System.Transaction中针对事务的并发提供了管理操作,常用有以下4种。<br /> <br />Serializable(默认)可读数据,无法修改,也无法加入新数据。<br />RepeatableRead可读数据,无法修改,但可以加入新数据。<br />ReadCommitted无法读取数据,但可以修改。<br />ReadUncommitted可以读取和修改数据。<br /> <br />显示事务中建立事物级别:<br />Transactio

学无止境! 1253

DeepBSA实战指南:从安装到基因组分析的全流程解析

本文详细解析了DeepBSA工具从安装到基因组分析的全流程,特别介绍了其简化生物信息学分析的'一键式'操作和独家深度学习算法。通过实战案例展示了DeepBSA在信噪比处理和QTL定位上的优势,并提供了Linux和Windows系统的安装避坑指南、数据预处理技巧以及算法选择建议,帮助用户高效完成基因组分析。

weixin_28732953的博客 436

保姆级教程:在华为MateBook E Go上安装安卓子系统(含Hyper-V配置和地区切换避坑指南)

本文提供在华为MateBook E Go(ARM架构)上安装Windows 11安卓子系统(WSA)的详细指南。重点阐述了ARM平台无需指令转译的流畅原生体验优势,并逐步讲解启用Hyper-V虚拟化、切换系统区域以安装Amazon Appstore、配置开发人员模式及使用ADB安装第三方应用(如华为应用市场)的全过程,助您解锁高效的原生安卓应用生态。

kafka6courier的博客 531

浅谈 .Net 的并发与并行

来源:寒江独钓 链接:http://www.cnblogs.com/yangecnu/p/Something-about-Concurrent-and-Parallel-  Programming.html  一、引言 前天在GitHub上看到一幅图,问如何向五岁的小孩讲解并发和并行。然后有人以这幅图做答:

orichisonic的专栏 2591

QT实现Word读写

在windows环境下,我们可以通过ActiveQt实现Office自动化,相当于VB的VBA功能。 以下是一个实例: #include #include #include int main(int argc, char *argv[]) {     QApplication a(argc, argv);     //显示的打开一个word应用程序     QAxW

nameofhsw的专栏 1万+

.NET 3.5(12) - DLINQ(LINQ to SQL)之事务处理和并发处理

步步为营VS 2008 + .NET 3.5(12) - DLINQ(LINQ to SQL)之事务处理和并发处理 作者:webabcd介绍以Northwind为示例数据库,DLINQ(LINQ to SQL)之事务处理和并发处理示例TransactionAndConcurrency.aspx &lt;%@ Page Language="C#" MasterPageFile="~/Si...

weixin_34410662的博客 183

UDS诊断服务基础详解之七-31服务

本节内容主要是讲解诊断服务中的31服务,包含31服务的使用场景,请求报文格式,响应报文格式,以及举例对31服务进行相关的说明

车载网络小D的博客 5625

Quuppa 如何引领蓝牙 ® 定位服务的全新发展方向

我们最优质的客户,是那些对其他实时定位系统(RTLS)的承诺感到失望、转而寻求 “能覆盖全业务场景的更广泛赋能技术” 的客户 —— 前文提到的消防车制造商就是典型案例:他们尝试并通过 Quuppa 的蓝牙方案取得了成功。我们希望业务合作伙伴(如系统集成商、解决方案提供商)能充分利用 Quuppa 智能定位系统的功能,为客户提供专属解决方案:无论是追踪微型标签、实现未来移动设备的 AoD 功能,还是基于 RSSI 的简单信标(信标作为物联网网关),这些功能都能让同一套 Quuppa 系统支持广泛的用例。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 831

步步为营VS 2008 + .NET 3.5系列文章索引

本文转载自:http://www.cnblogs.com/webabcd/archive/2007/10/29/941007.html 作者:webabcd 转载请注明该声明。[源码下载] 步步为营VS 2008 + .NET 3.5系列文章索引 作者:webabcd介绍步步为营VS 2008 + .NET 3.5系列文章索引:VS 2008新特性、C# 3.0新特性、LINQ查询...

wangchaoqi1985的博客 221

ThingsBoard PE专业版解决方案技术文档——温度&湿度

温湿度解决方案

weixin_67440240的博客 817

.NET 3.5 - DLINQ(LINQ to SQL)之面向对象的添加、查询、更新和删除

步步为营VS 2008 + .NET 3.5(8) - DLINQ(LINQ to SQL)之面向对象的添加、查询、更新和删除 作者:webabcd介绍以Northwind为示例数据库,DLINQ(LINQ to SQL)之完全面向对象的添加操作、查询操作、更新操作和删除操作示例Sample.aspx &lt;%@ Page Language="C#" MasterPageFile="~/...

weixin_34355715的博客 186

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

.NET 3.5(9) - DLINQ(LINQ to SQL)之执行SQL语句的添加、查询、更新和删除

步步为营VS 2008 + .NET 3.5(9) - DLINQ(LINQ to SQL)之执行SQL语句的添加、查询、更新和删除 作者:webabcd介绍以Northwind为示例数据库,DLINQ(LINQ to SQL)之执行指定SQL语句的添加操作、查询操作、更新操作和删除操作示例SQL.aspx &lt;%@ Page Language="C#" MasterPageFile=...

weixin_33910434的博客 194

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

步步为营VS 2008 + .NET 3.5(9) - DLINQ(LINQ to SQL)之执行SQL语句的添加、查询、更新和删除

 from:http://www.cnblogs.com/webabcd/archive/2007/10/19/929803.html步步为营VS 2008 + .NET 3.5(9) - DLINQ(LINQ to SQL)之执行SQL语句的添加、查询、更新和删除作者:webabcd介绍以Northwind为示例数据库,DLINQ(LINQ to SQL)之执行指定SQL语句的添加操作、

skybot的专栏 1449

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

.NET 3.5(13) - DLINQ(LINQ to SQL)之用户自定义函数

步步为营VS 2008 + .NET 3.5(13) - DLINQ(LINQ to SQL)之用户自定义函数、在不同的DataContext之间做更新、缓存、获取信息、数据加载选项和延迟加载 作者:webabcd介绍以Northwind为示例数据库,DLINQ(LINQ to SQL)之调用标量值用户自定义函数;调用表值用户自定义函数;使用数据加载选项加载数据;相关信息的获取;字段的延迟加载;...

weixin_33809981的博客 282

步步为营VS 2008 + .NET 3.5(11) - DLINQ(LINQ to SQL)之大数据量分页、延迟执行和日志记录

[索引页][源码下载]步步为营VS 2008 + .NET 3.5(11) - DLINQ(LINQ to SQL)之大数据量分页、延迟执行和日志记录作者:webabcd介绍以Northwind为示例数据库,DLINQ(LINQ to SQL)之结合GridView控件和ObjectDataSource控件演示大数据量分页,同时介绍延迟执行和日志记录示例PagingAndLogging.a

oloenxp 1384

步步为营VS 2008 + .NET 3.5(8) - DLINQ(LINQ to SQL)之面向对象的添加、查询、更新和删除

from:http://www.cnblogs.com/webabcd/archive/2007/10/18/928353.html步步为营VS 2008 + .NET 3.5(8) - DLINQ(LINQ to SQL)之面向对象的添加、查询、更新和删除作者:webabcd介绍以Northwind为示例数据库,DLINQ(LINQ to SQL)之完全面向对象的添加操作、查询操作、更新

skybot的专栏 609

.NET 3.5(10) - DLINQ(LINQ to SQL)之调用存储过程的添加、查询、更新和删除

步步为营VS 2008 + .NET 3.5(10) - DLINQ(LINQ to SQL)之调用存储过程的添加、查询、更新和删除 作者:webabcd介绍以Northwind为示例数据库,DLINQ(LINQ to SQL)之调用指定存储过程的添加操作、查询操作、更新操作和删除操作示例相关的存储过程 ALTER PROCEDURE [dbo].[spInsertCategory] ...

weixin_34301307的博客 185

步步为营VS 2008 + .NET 3.5(10) - DLINQ(LINQ to SQL)之调用存储过程的添加、查询、更新和删除

from:http://www.cnblogs.com/webabcd/archive/2007/10/22/932632.html步步为营VS 2008 + .NET 3.5(10) - DLINQ(LINQ to SQL)之调用存储过程的添加、查询、更新和删除作者:webabcd介绍以Northwind为示例数据库,DLINQ(LINQ to SQL)之调用指定存储过程的添加操作、查询

skybot的专栏 802

.NET 3.5(11) - DLINQ(LINQ to SQL)之大数据量分页、延迟执行和日志记录

步步为营VS 2008 + .NET 3.5(11) - DLINQ(LINQ to SQL)之大数据量分页、延迟执行和日志记录 作者:webabcd介绍以Northwind为示例数据库,DLINQ(LINQ to SQL)之结合GridView控件和ObjectDataSource控件演示大数据量分页,同时介绍延迟执行和日志记录示例PagingAndLogging.aspx &lt;%@...

weixin_34183910的博客 226
上一篇: 步步为营VS 2008 + .NET 3.5(11) - DLINQ(LINQ to SQL)之大数据量分页、延迟执行和日志记录
下一篇: 步步为营VS 2008 + .NET 3.5(13) - DLINQ(LINQ to SQL)之用户自定义函数、在不同的DataContext之间做更新、缓存、获取信息、数据加载选项和延迟加载
webabcd
博客等级 码龄17年 28粉丝 911原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值