• 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);通过该方法对数据库或数据库表进行重新配置。

  • 相关阅读:
    Requests
    探索式测试(概念)
    IDEA_Java+maven+selenium3+testng自动化测试环境安装
    RobotFramework Formate
    Robot Framework_dictionary search
    Git
    配置robotframework框架的自动化环境
    Python学习之路
    对 Jenkins+ANT+Jmeter 接口测试的实践
    自动生成测试脚本方案浅析
  • 原文地址:https://www.cnblogs.com/Terrece/p/6860284.html
Copyright © 2020-2023  润新知