我有两个名为Courses and Transactions.Courses的数据库表存储特定课程的详细信息,而Transactions表存储特定用户执行的事务的详细信息。
我的问题是如何确保只有当关于该特定课程的交易(添加,编辑,删除)保存到TransactionTable中时,才能保存CourseTable中的条目
CourseTable
http://codepen.io/ponciusz/pen/NGpXPB
TransactionTable
控制器
do {
try self.privateManagedObjectContext!.save()
} catch {
print("can't save to private context")
}
mainManagedObjectContext?.performBlock({
do{
try self.mainManagedObjectContext!.save()
} catch {
print("can't save to main context")
}
})
答案 0 :(得分:1)
我使用System.Transactions
解决了上述情况。希望任何有相同情况的人都觉得它很有用。
using (TransactionScope _ts = new TransactionScope())
{
string actionName = this.ControllerContext.RouteData.Values["action"].ToString();
string controllerName = this.ControllerContext.RouteData.Values["controller"].ToString();
Course _course = new Course();
_course.Duration = _mdlCourseVM.Course.Duration;
_course.DurationMode = _mdlCourseVM.DurationModeId;
_course.InstalmentFee = _mdlCourseVM.Course.InstalmentFee;
_course.Name = _mdlCourseVM.Course.Name;
_course.SingleFee = _mdlCourseVM.Course.SingleFee;
_db.Courses.Add(_course);
int i = _db.SaveChanges();
if (i > 0)
{
Common _cmn = new Common();
int k = _cmn.AddTransactions(actionName, controllerName, "",Session["UserId"].ToString());
if (k > 0)
{
_ts.Complete();
return Json(new { message = "success" }, JsonRequestBehavior.AllowGet);
}
else
{
return Json(new { message = "error" }, JsonRequestBehavior.AllowGet);
}
}
else
{
return Json(new { message = "error" }, JsonRequestBehavior.AllowGet);
}
}
}