zoukankan      html  css  js  c++  java
  • 一些理解的笔记

     Entity Framework简称EF

    /扩展:
    //注意:添加数据库模型时候,一定要选择在连接字符串中包含敏感数据(就是密码啊什么的。)如果没有选择,连接字符串中没有密码,则得手动添加
    //数据库和模型同步变化:双击数据库模型Model1.edmx ==》 空白处右击 ==》 选择:从数据库更新模型
    //ORM三种创建方式:
    //数据库优先(先创建数据库,再根据数据创建模型 ):添加=》新建项=》数据=》.net实体数据模型=》从数据库生成
    //模型优先(先创建模型,再安装模型创建数据库):添加=》新建项=》数据=》.net实体数据模型=》空模板

    //通俗的讲就是,由子类向父类转换是协变;由父类向子类转换是逆变。泛型也是一样。in(传入参数) 关键字表示可能逆变,out (输出参数)关键字表示可能协变。逆变和协变都是为类安全,安全不安,关键在使用谁父类?子类?
    //扩展:
    //微型ORM框架,比如:Dapper(针对sql server,高效率)/PetalPOCO(跨数据库),都是开源(不是简单的开发源代码,是有开源社区,有自由程序员相互交流,有一套活着的问答机制,使得项目不断的进步壮大),互联网更喜欢拥抱开源,没事多逛逛社区才能看到新技术
    //基于互联网项目和基于企业内部的项目是不一样的。

    //上下文,在MVC4_lxModelsModel1.Context.tt
    //上下文可以理解为一个数据库,通过这个数据库可以操作这个数据库中的表

    AEntities a_context;
    //表实例,在MVC4_lxModelsModel1.tt

    //:base调用父类构造函数

    //codeFirst(代码优先)
    //这个模式适合老项目,可以最少改动的把实现EF引入
    //代码优先,不用数据库和模型,直接写代码,根据代码生成数据库和模型。
    //这个方式有些麻烦,但可以跨数据库-------------------------------------------非常好,.net不用任何修改,换下连接字符串,就可以实现跨数据库,牛逼..
    //数据库要启动TCP/IP通信协议,才可以通过IP访问数据库(默认是启动的),而Named Popes 协议就是微软直接的通信协议(也是默认启动),反正要明白能连接数据库是因为实现了特点的通信协议
    //在web.fonfig中创建连接字符串
    //1.手写数据模型,这样用已有的M_1.cs吧
    //2.写上下文类,在里面修改父类方法指定连接字符串
    //3.添加各种引用,(可以创建空模型自动添加引入,再把模型删除就OK了)
    //4.new出上下文,通过.Database.CreateIfNotExists(); //创建数据库

    //EF框架基本基础市场上大部分数据库

    //增删改查的操作===》ObjectContext(DbContext)
    //ObjectContext(DbContext)===>操作XML映射(实体O,表R,映射M)===》生成SQL脚本
    //ObjectContext(DbContext)===>传入生成的脚本===》操作数据库
    //所以ObjectContext(DbContext)就是一个中间执行的类,里面就包含着一个隐藏的驱动层,就是这驱动层使得EF有操作各种数据库的能力,最终调用的是ADO.net

    //上下文的一种加载类数据的缓存,多个线程同时读取修改容易出问题,一般是这么处理的:
    //web中一个请求用一个上下文
    //winForm中最好是用using

    //web中一个请求只用一个上下文:
    public static AEntities myDbContext()
    {
      //HttpContext本身就是保证安全线程,存在一个线程中存在一个HttpContext,其他线程的HttpContext是无法访问本线程的HttpContext,只有一个实例,所以就保证了上下文实例也是唯一的。
      AEntities context = HttpContext.Current.Items["myDbContext"] as AEntities; //获取实例中的上下文
      if (context == null)
      {
        context = new AEntities();
        HttpContext.Current.Items.Add("myDbContext", context);//没有上下文就给他加一个上下,这个和缓存保持登陆状态的办法是一个意思
      }
      return context;
    }

  • 相关阅读:
    【面积并】 Atlantis
    【动态前k大 贪心】 Gone Fishing
    【复杂枚举】 library
    【双端队列bfs 网格图建图】拯救大兵瑞恩
    【奇偶传递关系 边带权】 奇偶游戏
    【权值并查集】 supermarket
    CF w4d3 A. Pythagorean Theorem II
    CF w4d2 C. Purification
    CF w4d2 B. Road Construction
    CF w4d2 A. Cakeminator
  • 原文地址:https://www.cnblogs.com/it-xcn/p/5698502.html
Copyright © 2011-2022 走看看