コード例 #1
0
        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();
            }
        }
コード例 #2
0
        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();
            }
        }