• EF – 3.EF数据查询基础(下)数据关联


    5.5.1 《关于“数据关联”,你不一定清楚的事》

    这讲视频比较全面地介绍了“一对一”、“一对多”和“多对多”三种数据关联类型在关系数据库和Entity Framework数据模型中的实现。再次强调一下,本讲所介绍的内容非常重要,务必掌握。

    5.5.2 《Entity Framework与单元测试》 

    在数据库应用程序开发中,单元测试对保证代码质量,实现敏捷开发具有重要意义,在这讲视频中,将向您介绍一些实用的单元测试方法,这些方法,您可以直接应用于自己的项目开发实践中。另外,在后继的视频中,我们也会使用单元测试这个工具来探索Entity Framework的技术内幕。

    提示一下,请注意如何对异步方法进行单元测试

    5.5.3 《关联数据的延迟加载》 

    默认情况下,Entity Framework会为数据实体类的导航属性添加一个virtual关键字,在程序运行时,这将导致Entity Framework创建一个代理对象,实现“需要时才提取数据”的这一数据提取策略,而这一切全都是自动的。本讲视频通过单元测试示例,介绍了Entity Framework的这一功能特性。

    5.5.4 《关联数据的预加载》 

    可以使用Include("导航属性名")的方式,让Entity Framework生成一条Join查询语句,一次性地把所有需要的数据都提取出来。本讲视频介绍了Entity Framework的这个特性。

    5.5.5 《关联数据的显式加载》 

    在代码中可以随时使用Load()方法,在需要的时候加载数据。本讲视频展示了这种数据加载的实例。

    在这一课时中,我们将围绕着“数据关联”这个中心而展开。不要轻视“数据关联”这件事,在开发数据库应用程序时,弄清楚哪些数据之间有关联,又如何设计与实现这些关联,都是很要紧的问题,处理不好,会给系统的运行性能、日后的系统维护和二次开发,带来很大的麻烦。

    在学习后面的内容之前,请务必保证你已经掌握本课时所介绍的内容。

    5.5.1 《关于“数据关联”,你不一定清楚的事》  时长:15分16秒 难度:偏难

    这讲视频比较全面地介绍了“一对一”、“一对多”和“多对多”三种数据关联类型在关系数据库和Entity Framework数据模型中的实现。再次强调一下,本讲所介绍的内容非常重要,务必掌握。

    Image 8

    5.5.2 《Entity Framework与单元测试》  时长:12分50秒 难度:中

    在数据库应用程序开发中,单元测试对保证代码质量,实现敏捷开发具有重要意义,在这讲视频中,将向您介绍一些实用的单元测试方法,这些方法,您可以直接应用于自己的项目开发实践中。另外,在后继的视频中,我们也会使用单元测试这个工具来探索Entity Framework的技术内幕。

    image

    提示一下,请注意如何对异步方法进行单元测试

    using System;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using whatIsEF;
    using System.Linq;
    using System.Data.Entity;
    
    namespace UnitTestwhatIsEF
    {
        [TestClass]
        public class UnitTest
        {
            // 用于存储提供给单元测试的信息。
            private TestContext testContextInstance;
    
            public TestContext TestContextInstance
            {
                get { return testContextInstance; }
                set { testContextInstance = value; }
            }
    
            //声明一个UPMSEntities
            private static UPMSEntities context;
    
            //必须在测试类中的任意测试运行之前使用
            [ClassInitialize()]
            public static void myClassInitialize(TestContext textcontext)
            {
                //就不用使用 using (UPMSEntities dbc = new UPMSEntities())
                context = new UPMSEntities();
            }
    
            //测试类中所有的测试都运行以后使用
            [ClassCleanup()]
            public static void MyClassCleanup()
            {
                //最后销毁
                context.Dispose();
            }
    
            //测试方法
            [TestMethod]
            public void TestShowUPMS_User()
            {
                    var lq = from d in context.UPMS_User
                             select d;
                    Assert.IsTrue(lq.Count() > 0);
                    foreach (var item in lq)
                    {
                        Console.WriteLine(item.UserId + "," + item.RealName);
                    }
            }
        }
    }
    

    5.5.3 《关联数据的延迟加载》  时长:7分51秒  难度:偏难

    默认情况下,Entity Framework会为数据实体类的导航属性添加一个virtual关键字,在程序运行时,这将导致Entity Framework创建一个代理对象,实现“需要时才提取数据”的这一数据提取策略,而这一切全都是自动的。本讲视频通过单元测试示例,介绍了Entity Framework的这一功能特性。

    *EF上下文里的 DBSet<T> 里的标准查询运算符方法,来自于System.Linq.Queryable里 给IQueryable接口添加的方法
    *延迟加载,本质原因一: 当前可能通过多个SQO方法来组合 查询条件,那么每个方法 都只是添加一个查询条件而已,
    *                     无法确定本次查询条件是否已经添加结束
    *                     所以,没有办法在每个SQO方法的时候确定SQL语句是什么,只能返回一个包含了所有添加条件的 DbQuery对象
    *                     当使用这个 DbQuery对象 的时候,才根据所有条件生成 SQL 语句,查询数据库

    image

    5.5.4 《关联数据的预加载》  时长:3分41秒 难度:中

    可以使用Include("导航属性名")的方式,让Entity Framework生成一条Join查询语句,一次性地把所有需要的数据都提取出来。本讲视频介绍了Entity Framework的这个特性。

    image

    5.5.5 《关联数据的显式加载》  时长:5分23秒 难度:偏难

    在代码中可以随时使用Load()方法,在需要的时候加载数据。本讲视频展示了这种数据加载的实例。

    Image 2

    image

    金旭亮

    面向对象软件开发实践之专业技能训练

    MOOC课程 http://mooc.study.163.com/learn/BIT-1000013000#/learn/content?type=detail&id=1000166069

  • 相关阅读:
    React `${}` 格式
    echarts-for-react
    React 列表 瀑布流 修改样式瀑布流不起效果
    前端技术栈
    React 技术栈
    自定义点击body 退出登录url隐藏
    import 'element-ui/lib/theme-default/index.css'报错
    cnpm install element-ui --save
    Vue http://eslint.org/docs/rules/no-trailing-spaces 报错问题
    【loj 6363】地底蔷薇【拉格朗日反演】【生成函数】
  • 原文地址:https://www.cnblogs.com/tangge/p/4519607.html
Copyright © 2020-2023  润新知