计划将项目中使用entity framework的要点记录到改栏目下
ef監(jiān)控sql執(zhí)行性能日志。http://www.cnblogs.com/CreateMyself/p/5277681.html
http://123.122.205.38/cn_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_522233.iso?fid=hqkUfQCwLLgefGdBiOC73ps1JxMA*O0VAQAAAGT1XOywsz1scWyaiQsnM*YF3JxX&mid=666&threshold=150&tid=E644E3AB354940E901996D7CF1F47CF9&srcid=119&verno=1
?
今天在做畢業(yè)設(shè)計(jì)時(shí),遇到了一個(gè)很郁悶的問(wèn)題:
public partial class ProjectModule : Entity{public ProjectModule(){Id = GuidComb.GenerateComb();}public Guid Id { get; set; }public string Name { get; set; }public int Grade { get; set; }public int DisplayOrder { get; set; }public string FullPathName { get; set; }public virtual Project Project { get; set; }public virtual ProjectModule Parent { get; set; }}?我是用函數(shù)獲取對(duì)象,對(duì)其進(jìn)行修改:
1 public ProjectModule GetById(Guid id) 2 { 3 return _context.ProjectModule 4 .FirstOrDefault(m => m.Id == id); 5 }之后調(diào)用對(duì)象對(duì)其修改:
1 [HttpPost] 2 public JsonResult Modify(ProjectModuleViewModel model) 3 { 4 using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork()) 5 { 6 AjaxResult result = new AjaxResult(); 7 8 ProjectModule module = _projectModuleService.GetById(model.Module_Id.Value); 9 if (model.Module_IsDelete == 1) 10 { 11 try 12 { 13 _projectModuleService.Delete(module); 14 unitOfWork.Commit(); 15 16 result = new AjaxResult() { status = AjaxResultStatus.success, detail = "刪除成功!" }; 17 } 18 catch (Exception ex) 19 { 20 unitOfWork.Rollback(); 21 LoggingService.Error(ex); 22 result = new AjaxResult() { status = AjaxResultStatus.failed, detail = "刪除失敗!" }; 23 } 24 25 return Json(result); 26 } 27 28 module.DisplayOrder = model.Module_DisplayOrder; 29 module.Name = model.Module_Name; 30 31 Project project = _projectService.GetById(model.Module_ProjectId); 32 module.Project = project; 33 34 if (string.IsNullOrEmpty(model.Module_Name)) 35 { 36 result = new AjaxResult() { status = AjaxResultStatus.failed, detail = new Dictionary<string, string>() }; 37 result.AddDetailItem("Module_Name", "請(qǐng)?zhí)顚?xiě)模塊名"); 38 return Json(result); 39 } 40 41 if (model.Module_ParentId.HasValue == false) 42 { 43 module.FullPathName = model.Module_Name; 44 module.Parent = null; 45 module.Grade = 0; 46 } 47 else 48 { 49 if (model.Module_ParentId.Value == model.Module_Id) 50 { 51 result = new AjaxResult() { status = AjaxResultStatus.failed, detail = new Dictionary<string, string>() }; 52 result.AddDetailItem("Module_ParentId", "節(jié)點(diǎn)自己不允許作為自己的子節(jié)點(diǎn)!"); 53 return Json(result); 54 } 55 ProjectModule parent = _projectModuleService.GetById(model.Module_ParentId.Value); 56 57 module.FullPathName = parent.FullPathName + "/" + model.Module_Name; 58 module.Parent = parent; 59 module.Grade = parent.Grade + 1; 60 } 61 62 try 63 { 64 unitOfWork.Commit(); 65 66 result = new AjaxResult() { status = AjaxResultStatus.success, detail = "保存成功!" }; 67 } 68 catch (Exception ex) 69 { 70 unitOfWork.Rollback(); 71 LoggingService.Error(ex); 72 result = new AjaxResult() { status = AjaxResultStatus.failed, detail = "保存失敗!" }; 73 } 74 75 return Json(result); 76 } 77 }?
其中代碼執(zhí)行了 module.Parent=null之后,發(fā)現(xiàn)并沒(méi)有把Parent對(duì)象真的賦值為null,但我修改了之后發(fā)現(xiàn)其他字段都已經(jīng)修改了,后來(lái)發(fā)現(xiàn)parent字段在數(shù)據(jù)庫(kù)中依然存在有值。
后來(lái)嘗試了使用我嘗試修改啦GetById()函數(shù)后,發(fā)現(xiàn)問(wèn)題解決了。
修改為:
public ProjectModule GetById(Guid id){return _context.ProjectModule.Include(x => x.Parent).FirstOrDefault(m => m.Id == id);}?
轉(zhuǎn)載于:https://www.cnblogs.com/yy3b2007com/p/5284723.html
總結(jié)
以上是生活随笔為你收集整理的计划将项目中使用entity framework的要点记录到改栏目下的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JavaScript高级程序设计-读书笔
- 下一篇: CUBRID学习笔记 31 通过sele