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的更多相关文章

  1. 在EntityFramework6中管理DbContext的正确方式——1考虑的关键点(外文翻译)

    (译者注:使用EF开发应用程序的一个难点就在于对其DbContext的生命周期管理,你的管理策略是否能很好的支持上层服务 使用独立事务,使用嵌套事务,并行执行,异步执行等需求? Mehdi El Gu ...

  2. [转]在EntityFramework6中执行SQL语句

    本文转自:http://www.cnblogs.com/wujingtao/p/5412329.html 在上一节中我介绍了如何使用EF6对数据库实现CRDU以及事务,我们没有写一句SQL就完成了所有 ...

  3. 在EntityFramework6中执行SQL语句

    在EntityFramework6中执行SQL语句 在上一节中我介绍了如何使用EF6对数据库实现CRDU以及事务,我们没有写一句SQL就完成了所有操作.这一节我来介绍一下如何使用在EF6中执行SQL语 ...

  4. 使用EntityFramework6完成增删查改和事务

    使用EntityFramework6完成增删查改和事务 上一节我们已经学习了如何使用EF连接数据库,并简单演示了一下如何使用EF6对数据库进行操作,这一节我来详细讲解一下. 使用EF对数据库进行操作, ...

  5. EntityFramework6 快速入门教程

    EntityFramework6 快速入门教程 不得不说EF在国内实在是太小众,相关的技术文章真实屈指可数,而且很多文章都很旧了,里面使用的版本跟如今的EF6差别还是比较大.我刚开始弄这个的时候真是绕 ...

  6. 让EntityFramework6支持SQLite

    最近给朋友的小孩做了一个毕业设计.用的是asp.net MVC5 + EntityFramework6 + SQL Server 2008. 结果做好后,朋友说能不能不要数据库,直接运行?顿时让我很纠 ...

  7. EntityFramework6 用 PostgreSQL

    开篇 1.这是自己第一篇博客,希望能够坚持下去.. 2.可能技术比较初级,大神看不下的话,多鼓励.. 3.开发环境为 vs2013,.net framework 4.5; 开始 1.安装entityf ...

  8. EntityFramework6与EntityFrameworkCore的区别

    EntityFramework6 EF6 是一个久经考验的数据库访问技术,发展多年,拥有许多特性,并且成熟稳定.2008年EF作为 .Net 3.5 Sp1 和Visual Studio 2008 S ...

  9. 【译】EntityFramework6与EntityFrameworkCore的区别

    EntityFramework6 EF6 是一个久经考验的数据库访问技术,发展多年,拥有许多特性,并且成熟稳定.2008年EF作为 .Net 3.5 Sp1 和Visual Studio 2008 S ...

随机推荐

  1. iptables初探

    一,前言 本来想起个名字叫做"小白都是怎么学习iptables的?"或者"你为什么还不了解iptables?"等等,就像简书上的头条文章,虽然被说成" ...

  2. 使用HTML5的canvas做图片剪裁

    前言 图片裁剪上传,不仅是一个很贴合用户体验的功能,还能够统一特定图片尺寸,优化网站排版,一箭双雕. 需求就是那么简单,在浏览器里裁剪图片并上传到服务器. 我第一个想到的方法就是,将图片和裁剪参数(x ...

  3. ajax 第四步

    Ajax和XMLHttpRequest详述 (2011-12-10 16:40:23) 转载▼ 标签: ajax xmlhttprequest 分类: Web Ajax:Asynchronous Ja ...

  4. PID控制算法研究

    1.matlab模糊控制工具箱:http://blog.csdn.net/gameboy12615/article/details/6367459 2.书籍:先进PID控制MATLAB仿真/刘金琨著 ...

  5. 学习HTML5的第二周

    ---恢复内容开始--- 这是我学习H5的第二周,在本周,我独立完成了一个网站的首页和一个二级页,虽然在做网页的时候我遇到了许多问题,但我自己想办法解决了其中的大部分,只留下了一小部分没有头绪的问题等 ...

  6. WebForm捆绑压缩js和css(WebForm Bundling and Minification)

    .net framework 4以上,可以使用Microsoft.AspNet.Web.Optimization 新建4.0项目 Nuget搜索optimization,安装第一个包 加入Bundle ...

  7. Java数据类型及运算

    (一),Java基本类型及运算 注释:可以用于生成API: 命令如:javadoc -d apidoc windowtitle hhh -doctitle aaa  -header bbbb -ver ...

  8. 篇3 安卓app自动化测试-搞定界面元素

    篇3                 安卓app自动化测试-搞定界面元素 --lamecho辣么丑 1.1概要 大家好! 我是lamecho(辣么丑),今天是<安卓app自动化测试>的第三 ...

  9. 【代码学习】GD库中图片缩印

    bool imagecopyresampled ( resource $dst_image, resource $src_image, int $dst_x, int $dst_y, int $src ...

  10. bzoj2144 【国家集训队2011】跳跳棋

    Description 跳跳棋是在一条数轴上进行的.棋子只能摆在整点上.每个点不能摆超过一个棋子.我们用跳跳棋来做一个简单的游戏:棋盘上有3颗棋子,分别在a,b,c这三个位置.我们要通过最少的跳动把他 ...