计划将项目中使用entity framework的要点记录到改栏目下

时间:2023-03-09 15:34:18
计划将项目中使用entity framework的要点记录到改栏目下

ef监控sql执行性能日志。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

今天在做毕业设计时,遇到了一个很郁闷的问题:

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; }
}

我是用函数获取对象,对其进行修改:

         public ProjectModule GetById(Guid id)
{
return _context.ProjectModule
.FirstOrDefault(m => m.Id == id);
}

之后调用对象对其修改:

     [HttpPost]
public JsonResult Modify(ProjectModuleViewModel model)
{
using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork())
{
AjaxResult result = new AjaxResult(); ProjectModule module = _projectModuleService.GetById(model.Module_Id.Value);
if (model.Module_IsDelete == )
{
try
{
_projectModuleService.Delete(module);
unitOfWork.Commit(); result = new AjaxResult() { status = AjaxResultStatus.success, detail = "删除成功!" };
}
catch (Exception ex)
{
unitOfWork.Rollback();
LoggingService.Error(ex);
result = new AjaxResult() { status = AjaxResultStatus.failed, detail = "删除失败!" };
} return Json(result);
} module.DisplayOrder = model.Module_DisplayOrder;
module.Name = model.Module_Name; Project project = _projectService.GetById(model.Module_ProjectId);
module.Project = project; if (string.IsNullOrEmpty(model.Module_Name))
{
result = new AjaxResult() { status = AjaxResultStatus.failed, detail = new Dictionary<string, string>() };
result.AddDetailItem("Module_Name", "请填写模块名");
return Json(result);
} if (model.Module_ParentId.HasValue == false)
{
module.FullPathName = model.Module_Name;
module.Parent = null;
module.Grade = ;
}
else
{
if (model.Module_ParentId.Value == model.Module_Id)
{
result = new AjaxResult() { status = AjaxResultStatus.failed, detail = new Dictionary<string, string>() };
result.AddDetailItem("Module_ParentId", "节点自己不允许作为自己的子节点!");
return Json(result);
}
ProjectModule parent = _projectModuleService.GetById(model.Module_ParentId.Value); module.FullPathName = parent.FullPathName + "/" + model.Module_Name;
module.Parent = parent;
module.Grade = parent.Grade + ;
} try
{
unitOfWork.Commit(); result = new AjaxResult() { status = AjaxResultStatus.success, detail = "保存成功!" };
}
catch (Exception ex)
{
unitOfWork.Rollback();
LoggingService.Error(ex);
result = new AjaxResult() { status = AjaxResultStatus.failed, detail = "保存失败!" };
} return Json(result);
}
}

其中代码执行了 module.Parent=null之后,发现并没有把Parent对象真的赋值为null,但我修改了之后发现其他字段都已经修改了,后来发现parent字段在数据库中依然存在有值。

后来尝试了使用我尝试修改啦GetById()函数后,发现问题解决了。

修改为:

  public ProjectModule GetById(Guid id)
{
return _context.ProjectModule
.Include(x => x.Parent)
.FirstOrDefault(m => m.Id == id);
}