EF – 5.DbSet与DbContext,数据更新奥秘
5.6.4 《DbSet与DbContext》
介绍DbSet与DbContext中的核心属性及重要方法。
5.6.5 《数据更新的奥秘》
这一讲极为重要,因为它揭示出了Entity Framework实现数据更新的内部机理,了解这些内容,对于用好Entity Framework非常重要。
5.6.4 《DbSet与DbContext》

介绍DbSet与DbContext中的核心属性及重要方法。

5.6.5 《数据更新的奥秘》
这一讲极为重要,因为它揭示出了Entity Framework实现数据更新的内部机理,了解这些内容,对于用好Entity Framework非常重要。

(2)CurrentValue

{
………
//状态
[TestMethod]
public void TestShowUPMS_UserState()
{
var users = (from c in context.UPMS_User orderby c.UserId descending select c).FirstOrDefault();
if (users != null)
{
DbEntityEntry<UPMS_User> entry = context.Entry<UPMS_User>(users);
Console.WriteLine("\n修改属性前的状态:{0}", entry.State); //Unchanged
Helper.PrintEntityPropertyValye(entry);
users.UserDescription = "10008";
context.ChangeTracker.DetectChanges();//更新实体对象当前的状态 //Modified
Console.WriteLine("\n修改属性后的状态:{0}", entry.State);
Helper.PrintEntityPropertyValye(entry);
//result 为当前状态
int result = context.SaveChanges();
Console.WriteLine("\n保存属性后的状态:{0}", entry.State); //Unchanged
Helper.PrintEntityPropertyValye(entry);
}
}
}
public class Helper
{
public static void PrintEntityPropertyValye(DbEntityEntry<UPMS_User> entry)
{
string current = entry.CurrentValues["UserDescription"].ToString();
string original = entry.OriginalValues["UserDescription"].ToString();
string database = entry.GetDatabaseValues()["UserDescription"].ToString();
Console.WriteLine("当前值:{0}\n原始值:{1}\n数据库值:{2}\n", current, original, database);
}
}

(3)禁用跟踪状态(提升性能)
只是查询(只读)的话。

EF – 5.DbSet与DbContext,数据更新奥秘的更多相关文章
- EF – 5.DbSet与DbContext,数据更新奥秘
5.6.4 <DbSet与DbContext> 介绍DbSet与DbContext中的核心属性及重要方法. 5.6.5 <数据更新的奥秘> 这一讲极为重要,因为它揭示出了En ...
- EF Code First、DbContext
EF Code First.DbContext 对于之前一直使用webForm服务器控件.手写ado.net操作数据库的同学,突然来了EF和MVC,好多新概念一下泉涌而出,犹如当头一棒,的确有点不知所 ...
- EF的DbSet属性的Where查询,注意事项
#1 Func<T,bool>与 Expression<Func<T,bool>>的区别 Func<T,bool>本身就是一个委托(delegate), ...
- 使用EF 4.1的DbContext的方法大全
简述:EF4.1包括Code First和DbContext API.DbContext API为EF提供更多的工作方式:Code First,Database First和Model First. ...
- EF和MVC系列文章导航:EF Code First、DbContext、MVC
对于之前一直使用webForm服务器控件.手写ado.net操作数据库的同学,突然来了EF和MVC,好多新概念泉涌而出,的确犹如当头一棒不知所措.本系列文章可以帮助新手入门并熟练使用EF和MVC,有了 ...
- 单元测试中使用Moq对EF的DbSet进行mock
刚用上Moq,就用它解决了一个IUnitOfWork的mock问题,在这篇博文中记录一下. 开发场景 Application服务层BlogCategoryService的实现代码如下: public ...
- EF的使用(DbContext对象的共用问题)
1.问题的引入 对于某一个数据库的EF操作对象,当执行某一次请求的时候,可能会多次操作数据库,也就是可能创建很多MyDbContext(继承自DbContext对象,EF上下文对象) 2.代码创建 当 ...
- EF Core 多个DbContext迁移命令
如果涉及多个项目,注意保持DbContext所在项目和启动项目关于数据库的包引用版本一致 注意设置不同的DbContext迁移文件目录不同 1.Enable-migrations EntityFram ...
- EF Entity Framework Core DBContext中文文档
Add(Object) 以添加状态开始跟踪给定的实体和任何其他尚未被跟踪的可访问实体,以便在调用SaveChanges()时将它们插入数据库.使用State设置单个实体的状态. Add<TEnt ...
随机推荐
- [BZOJ1833][ZJOI2010]count 数字计数
[BZOJ1833][ZJOI2010]count 数字计数 试题描述 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 输入 输入文件中仅包含一行两个整数a ...
- Sqli-LABS通关笔录-4
这一关卡让我学习到了 1.管他如何,想方设法先让sql报错再说.从报错中构造sql注入语句. 2.单引号不行就来双引号.括号等等的. 这次单引号没反应了.以后我们先来黑盒测试,实在没辙再看代码. -1 ...
- Android沉浸式任务栏的实现
1.MainActivity.java public class MainActivity extends Activity { @Override protected void onCreate(B ...
- ubuntu add application to launcher
eg. add sublime text to launcher so as to be found by launcher, docky, etc. add a file sudo gedit /u ...
- EXTJS 6 必填项加星号*
/**重写ext filed组件, 实现表单必填项加红色*星号**/ Ext.override(Ext.form.field.Base,{ initComponent:function(){ if(t ...
- (转) Lambda表达式中的表达式lambda和语句lambda区别
Lambda表达式可分为表达式lambda和语句lambda 表达式lambda:表达式位于 => 运算符右侧的lambda表达式称为表达式lambda (input parameters) = ...
- 基础知识《八》---Java反射机制
1.反射可以做什么 2.反射相关的API 3.获取Class运行时类的实例的三种方法: 1)通过运行时类本身的.class属性***** Class clazz= Person.class; 2)通过 ...
- 【转】WebMagic-总体流程源码分析
转自:http://m.blog.csdn.net/article/details?id=51943601 写在前面 前一段时间开发[知了]用到了很多技术(可以看我前面的博文http://blog.c ...
- Debian 配置apt-get源
1.配置apt-get源 cp /etc/apt/sources.list /etc/apt/sources.listbak #备份原有配置文件 nano /etc/apt/so ...
- simple demo how to get the list of online users
using System;using System.Collections;using System.Configuration;using System.Data;using System.Linq ...