/// <param name="相关ID">考试设置或试卷内容ID</param>
 /// <param name="类型">0练习,1考试</param>          
 public static string 得到在线考试Json(Guid 相关ID,byte 类型, Guid 用户ID)
 {
     int TestDuration = 0;
     试卷内容 content = new 试卷内容();
     if (类型 == 0)
     {
         练习设置 exerciseSet=练习设置.练习设置查询.Where(a => a.试卷内容ID == 相关ID).First();
         if (!exerciseSet.考生ID集合.Contains(用户ID))
         {
             throw new Exception("你不在该练习的考生范围内,无权参加练习!");
         }
         TestDuration = exerciseSet.考试时长;
         content=exerciseSet.试卷内容;
     }
     else
     {
         考试设置 examSet = 考试设置.考试设置查询.Where(a => a.ID == 相关ID).First();
         //判断是否是在考试时间内,是才能进入考试
         if (DateTime.Now < examSet.考试开始时间)
         {
             throw new Exception("考试时间未到,不能进入考试!");
         }
         if (DateTime.Now > examSet.考试结束时间)
         {
             throw new Exception("考试时间已过,不能进入考试!");
         }
         if (!examSet.考生ID集合.Contains(用户ID))
         {
             throw new Exception("你不在该考试的考生范围内,无权参加考试!");
         }
         if (考生做过的试卷.考生做过的试卷查询.Any(a => a.相关ID == 相关ID && a.类型 == 1 && a.考生ID == 用户ID
             && a.是否是已提交的试卷 == true) == true)
         {
             throw new Exception("你已参加过本场考试,不能再次考试!");
         }
         TestDuration = examSet.考试时长;
         content=examSet.试卷内容;
     }
     试卷外部信息 outside = content.试卷外部信息;
     if (outside.试卷状态Enum == 1 || outside.试卷状态Enum == 3)
     {
         throw new Exception("该试卷已被删除!");
     }
     if (outside.试卷状态Enum == 4)
     {
         throw new Exception("该试卷是草稿试卷,您无法参加考试!");
     }
     考生做过的试卷 memberDoneTest = new 考生做过的试卷();
     memberDoneTest.类型 = 类型;
     memberDoneTest.相关ID = 相关ID;
     if (类型 == 0)
     {
         memberDoneTest.练习设置 = new 练习设置();
         memberDoneTest.练习设置.试卷内容 = content;
         memberDoneTest.练习设置.试卷内容ID = content.ID;
     }
     else
     {
         memberDoneTest.考试设置 = new 考试设置();
         memberDoneTest.考试设置.试卷内容 = content;
         memberDoneTest.考试设置.试卷内容ID = content.ID;
     }
     content = 试卷内容.去掉试卷中的试题的答案(content);
     string json = memberDoneTest.转化成Json();
     json = json.Replace("\"考生ID\": null", "\"公共信息\":{\"考生ID\": null");
     if (类型 == 0)
     {
         json = json.Replace(",\r\n  \"练习设置\"", "},\r\n  \"练习设置\"");
     }
     else
     {
         json = json.Replace(",\r\n  \"考试设置\"", "},\r\n  \"考试设置\"");
     }
     //格式化Json
     JObject bo = JObject.Parse(json);
     json = json.Replace("试卷内容\": {", "试卷内容\": {\"考试时长\":" + TestDuration + ",");
     JObject bo1 = JObject.Parse(json);
     string newJson = "{\"公共信息\":";
     string common = bo1["公共信息"].ToString();
     newJson = newJson + common+",\"试卷内容\":";
     string test = string.Empty;
     if (类型 == 0)
     {
         test = bo1["练习设置"]["试卷内容"].ToString();
     }
     else
     {
         test = bo1["考试设置"]["试卷内容"].ToString();
     }
     newJson = newJson + test+"}";
     return newJson;
 }
 public static void 提交保存试卷(考生做过的试卷 考生做过的试卷, List<考生考试回答> 考生考试回答集合, List<试卷大题中试题> 试卷大题中试题集合)
 {
     //using (TransactionScope scope = new TransactionScope())
     //{
         LoveKaoExamEntities db = new LoveKaoExamEntities();
         考生做过的试卷表 memberDoneTest = new 考生做过的试卷表();
         考生做过的试卷表 dbMemberDoneTest = db.考生做过的试卷表.Where(a => a.考生ID == 考生做过的试卷.考生ID
             && a.相关ID == 考生做过的试卷.相关ID && a.是否是已提交的试卷 == false).FirstOrDefault();
         //先删除原来保存的,再加入新的保存
         if (dbMemberDoneTest != null)
         {
             db.考生做过的试卷表.DeleteObject(dbMemberDoneTest);
             //db.SaveChanges();
         }
         memberDoneTest.ID = 考生做过的试卷.ID;
         memberDoneTest.答题结束时间 = 考生做过的试卷.答题结束时间;
         memberDoneTest.答题开始时间 = 考生做过的试卷.答题开始时间;
         memberDoneTest.考生ID = 考生做过的试卷.考生ID;
         if (考生做过的试卷.是否是已提交的试卷 == true)
         {
             memberDoneTest.客观题得分 = 计算客观题总得分(考生考试回答集合, 试卷大题中试题集合, db);
         }
         memberDoneTest.相关ID = 考生做过的试卷.相关ID;
         memberDoneTest.类型 = 考生做过的试卷.类型;
         memberDoneTest.是否是已提交的试卷 = 考生做过的试卷.是否是已提交的试卷;
         memberDoneTest.批改状态 = 考生做过的试卷.批改状态类型;
         memberDoneTest.主观题得分 = 考生做过的试卷.主观题总得分;
         db.考生做过的试卷表.AddObject(memberDoneTest);
         foreach (var memberTestAnswer in 考生考试回答集合)
         {
             memberTestAnswer.考生做过的试卷ID = memberDoneTest.ID;
             memberTestAnswer.保存考生考试回答(db);
         }
         db.SaveChanges();
         //scope.Complete();
     //}
 }