EF进阶篇(三)——上下文
前言
上下文,到底什么是上下文,且听我仔细吹来。
内容
在对EF实体进行关系操作的时候,第一步需要我们创建上下文实例对象,然后根据实体的变化进而通过上下文对该实体进行状态的修改,我的理解就是上下文就是一个状态容器,里面可以放好多变化实体,而且还有一种状态标准,比如:增加、删除、修改、查询等状态。然后上下文根据进来实体的变化生成带有状态的可执行脚本然后去操作数据库,从而达到通过EF框架,可以操作数据库的目的。
我们平常生成的上下文如下,继承了底层封装好的dbcontext:
//父类的构造方法,达到连接配置文件中数据库配置功能
public HumanResourcesSystemEntities()
: base("name=HumanResourcesSystemEntities")
{
} protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
} public DbSet<T_departmentTable> T_departmentTable { get; set; }
public DbSet<T_userTable> T_userTable { get; set; }
上面代码第一个方法,是继承了父类dbcontext的构造方法,是一个连接数据库的功能。
<connectionStrings>
<add name="HumanResourcesSystemEntities" connectionString="metadata=res://*/test1.csdl|res://*/test1.ssdl|res://*/test1.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=HumanResourcesSystem;user id=sa;password=***;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
在EF中codeonly模式下,我们可以自定义上下文,如下:
public HotelDBcontext()
: base("name=ConnCodeFirst")//链接数据库
{ }
//根据这个集合找到这个实体,然后根据实体之间的关系去创建数据库;
public DbSet<Customer> Customer { get; set; }
public DbSet<OrderInfo> OrderInfo { get; set; }
上下文也是需要管理的,如果多个进程都要访问这个上下文实例,是不是会造成读脏数据。怎么对上下文实例进行管理呢?微软又想办法了,保证上下文实例只有一个,那么可以选择放到一个需求里。放到html上下文里面进行创建:用的时候先判断是否存在上下文实例,如果存在直接用,如果不存在那么就给他实例化一个。可以参考这个链接:http://www.cnblogs.com/kissdodog/p/3360584.html
小结
不断总结,不断进步。
感谢您的宝贵时间···
EF进阶篇(三)——上下文的更多相关文章
- 第二十三节: EF性能篇(三)之基于开源组件 Z.EntityFrameWork.Plus.EF6解决EF性能问题
一. 开篇说明 EF的性能问题一直以来经常被人所吐槽,究其原因在于“复杂的操作在生成SQL阶段耗时长,且执行效率不高”,但并不是没有办法解决,从EF本身举几个简单的优化例子: ①:如果仅是查询数据,并 ...
- EF进阶篇(二)——CRUD
前言 不写前言了... 内容 我们都知道我们修改的实体状态添加到上下文里面,然后上下文根据实体状态生成相应的SQL执行脚本,去隐式执行到数据库中.(屏幕前的你暂且这样理解吧,因为小编语文没有学好,太通 ...
- EF进阶篇(一)——概述
前言 以前在ITOO里面和图书馆项目开发的时候,采用的这个技术,但是总是对上下文那里不是特别清楚.上下文这个概念很是模糊,所以这次再次拿起这个技术点儿,然后复习了一遍,发现我以前想的好简单. 内容 E ...
- Membership三步曲之进阶篇 - 深入剖析Provider Model
Membership 三步曲之进阶篇 - 深入剖析Provider Model 本文的目标是让每一个人都知道Provider Model 是什么,并且能灵活的在自己的项目中使用它. Membershi ...
- PHP 进阶篇:面向对象的设计原则,自动加载类,类型提示,traits,命名空间,spl的使用,反射的使用,php常用设计模式 (麦子学员 第三阶段)
以下是进阶篇的内容:面向对象的设计原则,自动加载类,类型提示,traits,命名空间,spl的使用,反射的使用,php常用设计模式 ================================== ...
- C#使用Xamarin开发可移植移动应用(3.进阶篇MVVM双向绑定和命令绑定)附源码
前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 嗯..前面 ...
- C#使用Xamarin开发可移植移动应用(4.进阶篇MVVM双向绑定和命令绑定)附源码
前言 系列目录 C#使用Xamarin开发可移植移动应用目录 源码地址:https://github.com/l2999019/DemoApp 可以Star一下,随意 - - 说点什么.. 嗯..前面 ...
- WDA-文档-基础篇/进阶篇/讨论篇
本文介绍SAP官方Dynpro开发文档NET310,以及资深开发顾问编写的完整教程. 链接:http://pan.baidu.com/s/1eR9axpg 密码:kf5m NET310 ABAP ...
- C# 使用Emit实现动态AOP框架 进阶篇之异常处理
目 录 C# 使用Emit实现动态AOP框架 (一) C# 使用Emit实现动态AOP框架 (二) C# 使用Emit实现动态AOP框架 (三) C# 使用Emit实现动态AOP框架 进阶篇之异常处 ...
随机推荐
- Py修行路 python基础 (四)运算 copy
字符串的格式化 在字符串中插入 %s ,作为占位符,后边儿再定义插入变量. 算术运算 % 取模 判断奇偶数 / 除法 有小于号 // 取整除 返回整数部分 逻辑运算 and or not ' ...
- 【树莓派智能门锁】使用脚本控制GPIO来开锁【4】
假定你已经通过此文章或者其他方式完成了树莓派的基本配置 [树莓派]RASPBIAN镜像初始化配置 我们通过VNC View连接到树莓派查看一下~ 1.更新一下基本的设置:更新一下源,把python-d ...
- linux安装xgboost
在学校服务器上安装xgboost,事先我已经安装了anaconda,但是因为师兄已经装了python所以没加入到path. 网上的方法一般都要编译,另外官方的下载方法要联网..总之出了一堆错,最终还是 ...
- Android 从本地图库或拍照后裁剪图片并设置头像
在QQ和微信等应用都会有设置头像,一般都是从本地图库选取或相机拍照,然后再截图自己喜欢的部分,然后设置.最后一步把截取好的图片再保存到本地,来保存头像.为了大家使用方便,我把自己完整的代码贴出来,大家 ...
- 「小程序JAVA实战」微信小程序的简要注册流程(二)
转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-02/ 了解了小程序的历史和它未来的前景,我们开始注册小程序 注册小程序 可以参考官网介绍:http ...
- PHP数据结构之五 栈的PHP的实现和栈的基本操作
栈和队列是两种应用非常广泛的数据结构,它们都来自线性表数据结构,都是“操作受限”的线性表. 栈栈在计算机的实现有多种方式:硬堆栈:利用CPU中的某些寄存器组或类似的硬件或使用内存的特殊区域来实现.这类 ...
- collections、time和datetime模块
主要内容: 一.collections模块 二.time模块 三.datetime模块 1️⃣ collection模块 1.什么是collections模块.干什么用? collections模块 ...
- 专利系统数据库连接出现 base-64字符串中的无效字符 错误
错误提示如图: 解决方法: 1.进注册表修改如下 2.进入系统配置页面http://10.10.0.70/eaf/init 对数据库进行重新配置 3.若不行再将如下密码修改一下 重启IIS生效
- PHP json_encode 让URL//不转义
$json_info=json_encode((object)$data,JSON_UNESCAPED_SLASHES);
- Ionic01 简单介绍、环境搭建、创建项目、项目结构、创建组件、创建页面、子页面跳转
1 Ionic 基本介绍 Ionic 是一款基于 Angular.Cordova 的强大的 HTML5 移动应用开发框架 , 可以快速创建一个跨平台的移动应用.可以快速开发移动 App.移动端 WEB ...