Esempio n. 1
0
        /// <summary>
        /// 创建一个新的比赛并返回相应的比赛句柄。
        /// </summary>
        /// <returns></returns>
        public ContestHandle CreateContest()
        {
            // 创建新的比赛实体对象。
            return(m_factory.WithContext(context =>
            {
                ContestEntity entity = new ContestEntity();
                entity = context.AddContest(entity);

                // 为新创建的比赛分配配置文件。
                entity.ContestConfigurationFile = string.Concat(ContestDirectory, "\\", entity.Id);
                context.SaveChanges();

                return ContestHandle.FromContestEntity(entity);
            }));
        }
Esempio n. 2
0
 /// <summary>
 /// 从给定的比赛 ID 创建 ContestHandle 类的新实例。
 /// </summary>
 /// <param name="contestId">比赛 ID。</param>
 /// <returns>从给定的比赛 ID 创建的 ContestHandle 类对象。若数据库中不存在这样的比赛实体对象,返回 null。</returns>
 public ContestHandle QueryContestById(int contestId)
 {
     return(m_factory.WithContext(context =>
     {
         ContestEntity entity = context.QueryContestById(contestId);
         if (entity == null)
         {
             return null;
         }
         else
         {
             return ContestHandle.FromContestEntity(entity);
         }
     }));
 }
Esempio n. 3
0
        /// <summary>
        /// 使用给定的查询参数查询比赛句柄。
        /// </summary>
        /// <param name="query">封装查询参数的对象。</param>
        /// <returns>一个查询结果对象,其中包含了所有查询到的比赛句柄。</returns>
        /// <exception cref="ArgumentNullException"/>
        /// <exception cref="ArgumentException"/>
        public ReadOnlyCollection <ContestHandle> QueryContests(ContestQueryParameter query)
        {
            if (query == null)
            {
                throw new ArgumentNullException(nameof(query));
            }
            if (query.QueryByTitle && query.Title == null)
            {
                throw new ArgumentNullException(nameof(query.Title));
            }
            if (query.QueryByCreator && query.Creator == null)
            {
                throw new ArgumentNullException(nameof(query.Creator));
            }

            return(m_factory.WithContext(context =>
            {
                IQueryable <ContestEntity> set = DoQuery(context, query);

                // 对数据实体对象进行排序以准备执行分页操作。
                set = set.OrderByDescending(entity => entity.CreationTime);

                if (query.EnablePagedQuery)
                {
                    // 执行分页。
                    set = set.Page(query.PageQuery);
                }

                List <ContestHandle> handles = new List <ContestHandle>();
                foreach (ContestEntity ent in set)
                {
                    handles.Add(ContestHandle.FromContestEntity(ent));
                }

                return new ReadOnlyCollection <ContestHandle>(handles);
            }));
        }
 /// <summary>
 /// 从给定的比赛句柄以及异常消息创建 ContestException 类的新实例。
 /// </summary>
 /// <param name="handle">比赛句柄。</param>
 /// <param name="message">异常消息。</param>
 public ContestException(ContestHandle handle, string message) : base(message)
 {
     Handle = handle;
 }
 /// <summary>
 /// 从给定的比赛句柄创建 ContestException 类的新实例。
 /// </summary>
 /// <param name="handle"></param>
 public ContestException(ContestHandle handle) : base("比赛系统发生异常。")
 {
     Handle = handle;
 }