public int CreateRecord(FullRecord record) { if (!new[] { "c", "c++", "pascal", "java", "plaintext" }.Contains(record.Language)) { throw new ArgumentException("不支持的语言:" + record.Language); } using (MooDB db = new MooDB()) { Problem problem = (from p in db.Problems where p.ID == record.Problem select p).SingleOrDefault<Problem>(); if (problem == null) throw new ArgumentException("无此题目"); User currentUser = Security.CurrentUser.GetDBUser(db); Record newRecord = new Record() { Code = record.Code, CreateTime = DateTime.Now, Language = record.Language, Problem = problem, PublicCode = (bool)record.PublicCode, User = currentUser, }; problem.SubmissionTimes++; if (!(from r in db.Records where r.Problem.ID == problem.ID && r.User.ID == Security.CurrentUser.ID select r).Any()) { problem.SubmissionUser++; } Access.Required(db, newRecord, Function.CreateRecord); db.Records.AddObject(newRecord); db.SaveChanges(); return newRecord.ID; } }
public void ModifyRecord(string id, FullRecord record) { int iid = int.Parse(id); using (MooDB db = new MooDB()) { Record theRecord = (from r in db.Records where r.ID == iid select r).SingleOrDefault<Record>(); if (record == null) throw new ArgumentException("无此记录"); Access.Required(db, theRecord, Function.ModifyRecord); if (record.PublicCode != null) { theRecord.PublicCode = (bool)record.PublicCode; } db.SaveChanges(); } }