EntityFramework6.X 之DbContex
DbContext
数据库上下文DbContext是ObjectContext代表之一负责管理在运行时从数据库取数据、跟踪数据库的变更、对实体类映射到数据中持久化操作等,表示工作单元和存储库模式的组合,可用来查询数据库并将更改组合在一起,这些更改稍后将作为一个单元写回存储区。
1.使用原则
- 通常与DbSet<TEntity>属性的派生类型一起使用,代表要持久保存的对象。
- 若从派生上下文中调用无参数的DBContext构造函数,则可使用派生上下文的名称在配置文件中查找连接字符串,如果未找到任何连接字符串,则将名称传递给在DataBase类上注册的DefaultConnectionFactory.
- 默认情况下上下文管理连接数据库,根据需要它会打开和关闭连接
- 上下文不是线程安全的
2.生命周期
在创建实例时上下文的生命周期就开始和结束,该实例可处置或垃圾收集,所以通常使用Using关键字进行资源的释放。
3.相关操作
1) 实体框架关系定义:在Model模型层在A类中定义一个关于Virtual关键字的外键来
2) 创建代理
禁止创建代理:设置DbContext.Configuration.ProxyCreationEnabled=false;
显示创建代理实例:可延迟加载或代理跟踪
using (var context = new BloggingContext())
{var blog = context.Blogs.Create();
var admin = context.Users.Create<Administrator>();}
从代理类型获取实际实体类型:通过ObjectContext中的GetObjectType方法
using (var context = new BloggingContext())
{var blog = context.Blogs.Find(1);
var entityType = ObjectContext.GetObjectType(blog.GetType()); }
4.DBContext类的重载方法OnModelCreating方法
一个被保护的虚方法,当模型被初始化时进行的锁定配置,如:protected virtual void OnModelCreating(DbModelBuilder modelBuilder);通过该方法对数据库或数据库表进行重新配置。
EntityFramework6.X 之DbContex的更多相关文章
- 在EntityFramework6中管理DbContext的正确方式——1考虑的关键点(外文翻译)
(译者注:使用EF开发应用程序的一个难点就在于对其DbContext的生命周期管理,你的管理策略是否能很好的支持上层服务 使用独立事务,使用嵌套事务,并行执行,异步执行等需求? Mehdi El Gu ...
- [转]在EntityFramework6中执行SQL语句
本文转自:http://www.cnblogs.com/wujingtao/p/5412329.html 在上一节中我介绍了如何使用EF6对数据库实现CRDU以及事务,我们没有写一句SQL就完成了所有 ...
- 在EntityFramework6中执行SQL语句
在EntityFramework6中执行SQL语句 在上一节中我介绍了如何使用EF6对数据库实现CRDU以及事务,我们没有写一句SQL就完成了所有操作.这一节我来介绍一下如何使用在EF6中执行SQL语 ...
- 使用EntityFramework6完成增删查改和事务
使用EntityFramework6完成增删查改和事务 上一节我们已经学习了如何使用EF连接数据库,并简单演示了一下如何使用EF6对数据库进行操作,这一节我来详细讲解一下. 使用EF对数据库进行操作, ...
- EntityFramework6 快速入门教程
EntityFramework6 快速入门教程 不得不说EF在国内实在是太小众,相关的技术文章真实屈指可数,而且很多文章都很旧了,里面使用的版本跟如今的EF6差别还是比较大.我刚开始弄这个的时候真是绕 ...
- 让EntityFramework6支持SQLite
最近给朋友的小孩做了一个毕业设计.用的是asp.net MVC5 + EntityFramework6 + SQL Server 2008. 结果做好后,朋友说能不能不要数据库,直接运行?顿时让我很纠 ...
- EntityFramework6 用 PostgreSQL
开篇 1.这是自己第一篇博客,希望能够坚持下去.. 2.可能技术比较初级,大神看不下的话,多鼓励.. 3.开发环境为 vs2013,.net framework 4.5; 开始 1.安装entityf ...
- EntityFramework6与EntityFrameworkCore的区别
EntityFramework6 EF6 是一个久经考验的数据库访问技术,发展多年,拥有许多特性,并且成熟稳定.2008年EF作为 .Net 3.5 Sp1 和Visual Studio 2008 S ...
- 【译】EntityFramework6与EntityFrameworkCore的区别
EntityFramework6 EF6 是一个久经考验的数据库访问技术,发展多年,拥有许多特性,并且成熟稳定.2008年EF作为 .Net 3.5 Sp1 和Visual Studio 2008 S ...
随机推荐
- 手机自动化测试:Appium源码分析之跟踪代码分析九
手机自动化测试:Appium源码分析之跟踪代码分析九 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家 ...
- 锋利的jQuery(1)——DOM对象与jQuery对象的转换
1.认识jQuery DOM对象:即文档对象模型 jQuery对象:通过jQuery包装DOM对象后产生的对象.这是jQuery对象所特有的,在jQuery对象中无法使用DOM对象的任何方法,同时DO ...
- 解决tomcat debug 调试时间过长的问题
做java web很早就碰到一个问题,eclipse 的调试有时候忽然启动时间奇慢 ,但是正常启动速度没问题,其他项目也完全正常 后来想想也不影响项目运行,也没太在意 不过今天又碰到这问题了,而且启动 ...
- 拉普拉斯矩阵(Laplace Matrix)与瑞利熵(Rayleigh quotient)
作者:桂. 时间:2017-04-13 07:43:03 链接:http://www.cnblogs.com/xingshansi/p/6702188.html 声明:欢迎被转载,不过记得注明出处哦 ...
- ios 获取当前ViewController
- (UIViewController*)getpresentVC:(UIWindow *)window{ if ([window.rootViewController class]==[UITabB ...
- 2 安装redis.md
cnblogs-DOC 1.服务器环境 2.安装Redis3.安装Zookeeper4.安装MPush5.安装Alloc服务6.完整测试7.常见问题 一.Linux系统安装Redis 官网下载Redi ...
- Xamarin GitHub 下载的源码运行不了
初学Xamarin ,各种折腾,大概这公司破电脑配置差,老是很多问题. GitHub 真是个好东西,可以参考别人做的,不过下载来运行不了就各种折腾了,为此我重装电脑两次了,反正win10安装就十几分 ...
- 概念学习 - JNDI, JDBC, ODBC, DataSource
layout: post title: 概念学习 - JNDI, JDBC, ODBC, DataSource --- 最近在学习Java Hibernate,对数据库资源访问这块好多概念模糊,所以在 ...
- vue 调用高德地图
一. vue-amap,一个基于 Vue 2.x 和高德地图的地图组件 https://elemefe.github.io/vue-amap/#/ 这个就不细说了,按照其文档,就能够安装下来. 二. ...
- Linux Bootup Time
Linux Bootup Time 英文原文地址:http://elinux.org/Boot_Time 1. 简介 启动时间这一话题包括很多子话题,比如启动时间的衡量.启动时间的分析.人为因素分 ...