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;
    }

  • 相关阅读:
    Ztree下拉框多选
    FullCalendar日程插件
    viscose 前端常用插件
    一些词
    关于require()和export引入依赖的区别
    关于CMD/AMD和Common.js/Sea.js/Require.js
    vue中的双向数据绑定原理简单理解
    Vue-cli简单使用
    webpack简单配置
    vuex基础
  • 原文地址:https://www.cnblogs.com/it-xcn/p/5698502.html
Copyright © 2011-2022 走看看