03. Entity Framework

一. 相关知识复习

  1. var 类型推断:

     var p = new Person();

  2. 匿名类型

  3. 给新创建对象的属性赋值的简化方法:

    Person p = new Person{Name = "tom", Age="5"};

    等价于

    Person p = new Person();

    p.Name = "tom";

    p.Age = "5";

  4. Lambda表达式

    集合常用扩展方法:

      Where(支持委托)、Select(支持委托)、Max、Min、OrderBy

      First(获取第一个,如果一个都没有则异常)

      FirstOrDefault(获取第一个,如果没有则返回默认值)

      Single(获取唯一一个,如果没有或则多个则异常)

      SingOrDefault(获取唯一一个,如果没有则返回默认值,如果有多个则异常)

二. 高级集合扩展方法

  1. Any() 

    判断集合是否包含元素,返回值是bool,一般比Count()>0效率高。

    Any还可以指定条件表达式。bool b = list.Any(p=>p.Age>50); 等价于 bool b = list.Where(p=>p.Age>50).Any();

  2. Distinct()

    剔除完全重复数据。(*)注意自定义ui想的Equals问题:需要重写Equals和GetHashCoe方法来进行内容比较

  3. 排序

    升序:list.OrderBy(p=>p.Age)

    降序:list.OrderByDescending(p=>p.Age)

    指定多个排序规则,而不是多个OrderBy,而是:list.OrderByDescending(p=>p.Age).ThenBy(p=>p.Salary),也支持ThenByDescending()。

    注意这些操作不会影响原始的集合数据。

  4. Skip()

    跳过前n条数据,如果不足n条也不会报错。

    常用来分页获取数据。

    list.Skip(3).Take(2):跳过前3条数据获取2条数据。

  5. Except()

    Except(items1) 排除当前集合中在items1中存在的元素。

  6. Union()

    Union(items1) 把当前集合和items1中取并集。

  7. Intersect()

    Intersect(items1)把当前集合和items1中取交集

  8. 分组

    foreach( var g in list.GroupBy( p=>p.Age))

    {

      Console.WriteLine( g.Key + ":" + g.Average( p=>p.Salary));

    }

  9. SelectMany

    把集合中每个对象的另外集合属性的值重新拼接为一个新的集合

  10. Join

    Join可以实现和数据库一样的Join效果,对有关联关系的数据进行联合查询

三. linq

4. C# 6.0语法

5. Entity Framework简介

6. EF安装

7. EF简单DataAnnotations实体配置

8. EF模型的两种配置方式

9. FluentAPI配置T_Persons的方式

10. EF的基本增删改查

11. EF原理及SQL监控

12. 执行原始SQL

13. 不是所有lambda 写法都能被支持

14. EF对象的状态

15. Fluent API 更多配置

16. 一对多关系映射

17. 一对多关系配置

18. 多对多关系配置

19. 延迟加载(LazyLoad)

20. 不延迟加载,怎么样一次性加载

21. 延迟加载的一些坑

22. 实体类的继承

posted @ 2020-01-14 14:01  Zzzzzz~  阅读(148)  评论(0)    收藏  举报