public void Save() { // 设置事务参数 TransactionOptions transactionOption = new TransactionOptions(); // 设置事务隔离级别 transactionOption.IsolationLevel = System.Transactions.IsolationLevel.ReadCommitted; // 设置事务超时时间为60秒 transactionOption.Timeout = new TimeSpan(0, 60, 0); // 写入数据库 using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required, transactionOption)) { // 保存到数据库,如果遇到开放式冲突,则以本地数据为准 try { de.SaveChanges(); } catch (OptimisticConcurrencyException) { de.Refresh(RefreshMode.ClientWins, de.Film); de.SaveChanges(); } catch (Exception ex) { throw ex; } ts.Complete(); } }
public void Import() { List <FilmDownloadInfo> importList = this.downloadList.Where(p => p.Check == true).ToList(); List <Film> filmList = de.Film.ToList(); List <FilmCategory> filmCategoryList = de.FilmCategory.ToList(); List <FilmArea> filmAreaList = de.FilmArea.ToList(); foreach (FilmDownloadInfo filmDown in importList) { Film film = filmList.Where(p => p.FilmCode.Trim() == filmDown.ID).FirstOrDefault(); if (film == null) { film = new Film(); // 生成新的Id(这里长度是12位) // 2011.12.30, Jiang, 生成规则:影片编号+年份 film.FilmId = filmDown.ID + year; de.Film.AddObject(film); try { film.FilmCode = filmDown.ID; } catch { } try { film.FilmName = filmDown.Name; } catch { } try { film.FilmAreaId = filmDown.ID.Substring(0, 3); } catch { } if (filmAreaList.Where(p => p.FilmAreaId == film.FilmAreaId).FirstOrDefault() == null) { throw new Exception(string.Format("导入影片 \"{0}:{1}\" 失败,原因为:影片产地 \"{2}\" 不存在!", film.FilmId, film.FilmName, film.FilmAreaId)); } try { film.FilmCategoryId = filmDown.ID.Substring(3, 1); } catch { } if (filmCategoryList.Where(p => p.FilmCategoryId == film.FilmCategoryId).FirstOrDefault() == null) { throw new Exception(string.Format("导入影片 \"{0}:{1}\" 失败,原因为:影片分类 \"{2}\" 不存在!", film.FilmId, film.FilmName, film.FilmCategoryId)); } // 添加默认值 film.HasMode = false; film.FilmLength = 0; //2011.12.30, Jiang, 这里现在不需要赋值,赋上空值,优化速度 film.Publisher = string.Empty; film.Producer = string.Empty; film.Director = string.Empty; film.Cast = string.Empty; film.Brief = string.Empty; try { if (string.IsNullOrWhiteSpace(filmDown.PublishDate) != true) { film.PublishDate = Convert.ToDateTime(filmDown.PublishDate); } } catch { } } } try { de.SaveChanges(); } catch (OptimisticConcurrencyException) { de.Refresh(RefreshMode.ClientWins, de.Film); de.SaveChanges(); } }