开发工具:C# 2008
  LINQ  
问题:
  当只有一个客户端操作的时候没有问题,多个客户端只要不是同时进行这个操作也没问题,但只要两个或以前的用户同时点击确定后执行以下代码则会报错:
  在调用 SubmitChanges 期间不能执行此操作。
出错语句是下面这一句:try
                        {
                            tt = 5;
                            db.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);与http://topic.csdn.net/u/20100801/11/4648194c-4bc5-4002-b540-53f36033dc37.html?seed=613216744&r=67382619#r_67382619是同一个问题
附代码:
int tt = 0;
            int aa = 0;            //if (token.pwd != ConfigurationManager.AppSettings["pwd"])
            //    return false;            //设置类别
            this.SetCategory(streetName, version);
            bool flag = true;            //using (db = new ORShoppingDataContext(this.ORConnectingString))
            //{                          string filename = string.Format(@"{0}\ExportLog{1}.txt", this.LogPath
               , DateTime.Now.ToString("yyyyMMddHHmmssfff"));
                StreamWriter sw = new StreamWriter(filename, true, Encoding.UTF8);
                try
                {
                    //string fileContents;
                    //using (StreamReader sr = new StreamReader(@"D:\Test.txt", System.Text.Encoding.UTF8))
                    //{
                    //    fileContents = sr.ReadToEnd();
                    //}
                    //xml = fileContents;
                    //streetName = "男性时尚";
                    //version = "China";                    //using (TransactionScope ts = new TransactionScope())
                    //{                    if (db.Connection != null) db.Connection.Open();
                    DbTransaction tran = db.Connection.BeginTransaction();
                    db.Transaction = tran;                    try
                    {
                        string str = "";
                        str = string.Format("<?xml version={0}1.0{1} encoding={2}utf-8{3} standalone={4}yes{5} ?>", dqm, dqm, dqm, dqm, dqm, dqm);
                        str += @"<DataList> ";
                        str += xml;
                        str += "</DataList>";
                        XmlDocument doc = new XmlDocument();
                        doc.InnerXml = str;                        DataSet dsStatic = new DataSet();                        //读出后一个Table
                        //dsStatic.ReadXml(new XmlNodeReader(doc));                        aa = 1;                        using (XmlNodeReader read = new XmlNodeReader(doc))
                        {
                            dsStatic.ReadXml(read);
                            read.Close();                        }                        DataTable tb = dsStatic.Tables[0];
                        DataRow mrow = dsStatic.Tables[0].Rows[0];                        //dsStatic.Dispose();                        tt = 1;                        string originalThumbnail = "";
                        string originalThumbnailType = "";                        originalThumbnail = mrow["OriginalThumbnail"].ToString();
                        originalThumbnailType = GetFileType(mrow["OriginalThumbnail"].ToString());                        int ver = 1;                        string imageType = mrow["ImageType"].ToString();
                        //如果有旧的则读出旧的记录
                        int? sid = 0;
                        db.uspGetSrdID(mrow["uid"].ToString(), 1, streetName, ref sid);                        var oldSrd =
                            (from s in db.ShopRecordData
                             where s.ShopRecordDataID == (int)sid
                             select s).FirstOrDefault();                        //var oldSrd =
                        //   (from os in db.ShopRecordData
                        //    where os.Uid.Trim() == mrow["uid"].ToString().Trim()
                        //    && os.XmlType == 1
                        //    && os.RecordState == 1
                        //    && os.Ver == (from s in db.ShopRecordData
                        //                  where s.DataListID == os.DataListID
                        //                  && s.XmlType == os.XmlType
                        //                  && s.Uid == s.Uid
                        //                  && s.RecordState == os.RecordState
                        //                  select s.Ver).Max()
                        //    select os).FirstOrDefault();                        tt = 2;
                        if (oldSrd != null)
                        {
                            var sver =
                                (from os in db.ShopRecordData
                                 where os.ShopRecordDataID==sid
                                 select os.Ver).Max();
                            ver = sver + 1;
                            try
                            {
                                db.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);                                tt = 3;
                            }
                            catch (System.Data.Linq.ChangeConflictException ex)
                            {
                                db.ChangeConflicts.ResolveAll(RefreshMode.KeepChanges);//保存原来的值 有冲突的话保存当前版本                                                                              
                                db.SubmitChanges();
                            }                        }                        //1.插入ShopRecordData
                        ShopRecordData srd = new ShopRecordData()
                        {
                            DataListID = this.CatagoryIndex,
                            XmlType = 1,
                            RecordID = 1,
                            Uid = mrow["Uid"].ToString().Trim(),
                            Title = mrow["Title"].ToString() == string.Empty ? "" : GetEscapeCharter(mrow["Title"].ToString().Substring(0, (mrow["Title"].ToString().Length > 255 ? 255 : mrow["Title"].ToString().Length))),
                            DataCount = GetInt32(mrow["DataCount"].ToString()),
                            MinPrice = GetDecimal(mrow["MinPrice"].ToString()),
                            MaxPrice = GetDecimal(mrow["MaxPrice"].ToString()),
                            OriginalUrl = mrow["OriginalUrl"].ToString(),
                            OriginalUrlType = GetFileType(mrow["OriginalUrl"].ToString()),
                            OriginalThumbnail = mrow["OriginalThumbnail"].ToString(),
                            OriginalThumbnailType = originalThumbnailType,
                            ImageUrl = mrow["ImageUrl"].ToString() == string.Empty ? "" : mrow["ImageUrl"].ToString(),
                            ImageUrlType = GetFileType(mrow["ImageUrl"].ToString()),
                            ImageLink = mrow["ImageLink"].ToString() == string.Empty ? "" : mrow["ImageLink"].ToString(),
                            CommentCount = GetInt32(mrow["CommentCount"].ToString()),
                            Grade = GetInt32(mrow["Grade"].ToString()),
                            ProductDesc = mrow["ProductDesc"].ToString() == string.Empty ? "" : mrow["ProductDesc"].ToString(),
                            Scene = GetInt32(mrow["Scene"].ToString()),
                            X = GetDouble(mrow["X"].ToString()),
                            Y = GetDouble(mrow["Y"].ToString()),
                            Z = GetDouble(mrow["Z"].ToString()),
                            Width = GetDecimal(mrow["Width"].ToString()),
                            Height = GetDecimal(mrow["Height"].ToString()),
                            CreateTime = Convert.ToDateTime(mrow["CreateTime"].ToString()),
                            UpdatedTime = Convert.ToDateTime(mrow["UpdatedTime"].ToString()),
                            Ver = ver,
                            RecordState = 1,
                            DirectionID = mrow["Location"].ToString() == "左" ? 1 : 2,
                            Angle = tb.Columns.Contains("Angle") == true ? GetDouble(mrow["Angle"].ToString()) : 0,                            //添加是否有内容的判断 即image1 节的内容不为空  2010.5.28 11:57 Modify by ling
                            //CanClick = mrow["Image1"].ToString() == string.Empty ? false : true,
                            CanClick = false,
                            EnterType = imageType,
                            IsBuild = false,
                            ParentID = 0                        };                        if (tb.Columns.Contains("DetailWallPaperUrl"))
                        {
                            tt = 4;
                            srd.DetailWallPaperUrl = mrow["DetailWallPaperUrl"].ToString().Trim();
                            srd.DetailWallPaperType = GetFileType(mrow["DetailWallPaperUrl"].ToString());
                            if (oldSrd != null)
                            {
                                srd.DetailWallPaper = oldSrd.DetailWallPaper;
                            }
                        }                        db.ShopRecordData.InsertOnSubmit(srd);                        try
                        {
                            tt = 5;
                            db.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);
                        }
                        catch (System.Data.Linq.ChangeConflictException ex)
                        {
                            db.ChangeConflicts.ResolveAll(RefreshMode.KeepChanges);//保存原来的值 有冲突的话保存当前版本                                                                              
                            db.SubmitChanges();
                        }