计划将项目中使用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);
}
计划将项目中使用entity framework的要点记录到改栏目下的更多相关文章
- 如何在ASP.NET Core中应用Entity Framework
注:本文提到的代码示例下载地址> How to using Entity Framework DB first in ASP.NET Core 如何在ASP.NET Core中应用Entity ...
- 在Oracle中使用Entity Framework 6 CodeFirst
项目中需要将系统从SQLServer数据库迁移到Oracle上.由于原大部分数据访问操作都是通过包装了Entity Framework的统一访问入口实现的,所以需要研究Entity Framework ...
- Oracle中使用Entity Framework 6.x Code-First
Oracle中使用Entity Framework 6.x Code-First方式开发 去年写过一篇EF的简单学习笔记,当时EF还不支持Oracle的Code-First开发模式,今天无意又看了下O ...
- dotnet ef执行报错, VS 2019发布时配置项中的Entity Framework迁移项显示不出来
VS 2019发布时配置项中的Entity Framework迁移项显示不出来 dotnet ef dbcontext list --json “无法执行,因为找不到指定的命令或文件.可能的原因包括: ...
- MVC中使用Entity Framework 基于方法的查询学习笔记 (一)
EF中基于方法的查询方式不同于LINQ和以往的ADO.NET,正因为如此,有必要深入学习一下啦.闲话不多说,现在开始一个MVC项目,在项目中临床学习. 创建MVC项目 1.“文件”--“新建项目”-- ...
- Oracle中使用Entity Framework 6.x Code-First方式开发
去年写过一篇EF的简单学习笔记,当时EF还不支持Oracle的Code-First开发模式,今天无意又看了下Oracle官网,发现EF6.X已经支持了,并且给出了二篇教程(英文版): 1.Using ...
- 如何使用ASP.NET Web API OData在Oracle中使用Entity Framework 6.x Code-First方式开发 OData V4 Service
环境: Visual Studio 2013 + .Net Framework 4.5.2 1.新建项目 2.安装OData,ODP.NET 安装的包: 下面是部分代码: using System; ...
- [UWP小白日记-11]在UWP中使用Entity Framework Core(Entity Framework 7)操作SQLite数据库(一)
前言 本文中,您将创建一个通用应用程序(UWP),使用Entity Framework Core(Entity Framework 7)框架在SQLite数据库上执行基本的数据访问. 准备: Enti ...
- UWP: 在 UWP 中使用 Entity Framework Core 操作 SQLite 数据库
在应用中使用 SQLite 数据库来存储数据是相当常见的.在 UWP 平台中要使用 SQLite,一般会使用 SQLite for Universal Windows Platform 和 SQLit ...
随机推荐
- NOI 题库 1792
1792 迷宫 描述 一天Extense在森林里探险的时候不小心走入了一个迷宫,迷宫可以看成是由n * n的格点组成,每个格点只有2种状态,.和#,前者表示可以通行后者表示不能通行.同时当Exten ...
- GO语言练习:值与引用
1.代码 2.运行 package main import "fmt" func testValue(){ fmt.Println("for value") v ...
- 接口测试之soupui&groovy
原著地址:http://www.cnblogs.com/wade-xu/p/4236295.html#3334654 需注意下方code的设置
- Enumerators and Enumerable
Next week task is to learn how generic enumeration interface works, try to build a sample and write ...
- Objective-c的内存管理MRC与ARC
Objective-c的内存管理MRC与ARC Objective-c中提供了两种内存管理机制MRC(MannulReference Counting)和ARC(Automatic Referen ...
- [LintCode] Plus One 加一运算
Given a non-negative number represented as an array of digits, plus one to the number. The digits ar ...
- Java 多继承
浅浅地上了几天 Java 的课程,然后怎么也想不明白:Java 不支持多继承有和接口到底是什么样的关系? 一只牛的故事. // 叫的抽象基类 abstract class call{ } // 跑的抽 ...
- Linux下安装配置Apache+PHP+MariaDB
一.安装apache 1.下载并安装apache yum install httpd 2.启动apache systemctl start httpd.service 3.停止apache syste ...
- 使用Sublime Text 直接运行Quick-cocos2d-x 项目
一.新建一个编译系统 { "cmd": "D:/WorkSoftWare/Quick/quick-cocos2d-x-3.3rc0/quick/samples/Runni ...
- SpringBoot项目部署与服务配置
spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动.其内置Tomcat容器或Jetty容器,具体由配置来决定(默认Tomcat).当然你也可以将项 ...