zoukankan      html  css  js  c++  java
  • Entity Framework part1

    First Demo
    实体框架Entity Framework,简称EF
    EF是微软推出的基于Ado.Net的数据库访问技术,是一套ORM框架
    底层访问数据库的实质依然是ado.net
    是一套orm框架,即框架中包含了实例模型、数据模型、映射关系三部分
    上下文类DbContext:内部封装了ado.net操作,用于对数据进行crud
    子上下文类的属性,其实就是一个集合,可以通过父类中的DbSet<>属性获得,利于编写抽象代码

    回顾查询语句执行顺序

    (8)SELECT (9)DISTINCT  (11)<Top Num> <column>(1)FROM [left_table](3)<join_type> JOIN <right_table>(2)        ON <join_condition>4)WHERE <where_condition>(5)GROUP BY <group_by_list>(6)WITH <CUBE | RollUP>(7)HAVING <having_condition>(10)ORDER BY <order_by_list>

    分页查询:Skip、Take(仅lambda,一定要先排序后使用此方法,lambda特有)
    对于一个命令语句,可以将查询语法、方法语法混合使用
    返回值:IQueryable<T>类型

    新建实体数据模型,介绍生成的类型
    目标:完成增加、修改、删除操作
    增加:Add()
    修改:AddOrUpdate()
    删除:Remove();参数为一个对象,所以要先查找
    方法SaveChanges():在完成增加、修改、删除、操作后,一定要调用此方法,将改变进行保存

    导航属性
    导航属性:当两张表有关系时,根据关系会在模型中生成相应的属性
    如果是1的关系,则生成的是对应类型的属性
    如果是n的关系,则生成的是ICollection<对应类型>的属性

    延迟加载
    进行查询时,只是将查询的命令进行拼接,构建命令树,并不会立即执行查询操作,在实际使用数据时才会执行查询返回结果
    返回类型为IQueryable<T>或IEnumerable<T>
    区别:
    IQueryable<T>可以拼接命令树,即所有命令会构成一条sql执行
    IEnumerable<T>不会拼接命令树,即只有第一个语句构成sql语句,然后把结果加载到内存中,再进行进一步筛选
    使用AsQueryable()可以将查询结果转换成IQueryable<T>类型
    使用AsEnumerable()可以将查询结果转换成Ienumerable<T>类型
    集合类型的导航属性也采用延迟加载

    禁用延迟加载
    如果查询结果是个集合,在查询语句的结尾调用LoList()方法
    如果查询结果是单个值,在查询语句的结尾调用FirstOrDefault()方法
    对于导航属性,可以在查询结果上使用Include()方法

    优点:用的时候才请求数据库获取数据,可以实时获得数据,适用于数据变化大的情况
    缺点:每次用数据时才发出一次请求,增加了数据库的压力,对于数据变化小的情况不适用

  • 相关阅读:
    防止跨域(jsonp详解)
    java-文件和I/O
    spring-AOP框架(基于AspectJ注解配置AOP)
    @RequestMapping、@Responsebody、@RequestBody和@PathVariable详解(转)
    spring-IOC容器(三)
    spring-IOC容器(二)
    spring-IOC容器(一)
    Spring4相关jar包介绍(转)
    Eclipse设置自动提示(转)
    java-环境安装及配置
  • 原文地址:https://www.cnblogs.com/CSharpLover/p/6115697.html
Copyright © 2011-2022 走看看