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

  • 相关阅读:
    source is null for getProperty(null, "cpmodel")异常结局
    insert时报Cannot add or update a child row: a foreign key constraint fails (`yanchangzichan`.`productstatusrecord`, CONSTRAINT `p_cu` FOREIGN KEY (`cid`) REFERENCES `customer` (`cid`))错误
    Python流程控制
    Python运算符
    Python字符串格式化输出
    Python数据强制类型转换
    Python数据类型
    Python input函数使用
    Python print函数使用
    Python变量
  • 原文地址:https://www.cnblogs.com/Terrece/p/6860284.html
Copyright © 2011-2022 走看看