zoukankan      html  css  js  c++  java
  • Entity Framework中实现查询的几种方法

    在介绍几种方法前,献上一张图,希望图的作者不要追究我的盗图之过。本文的内容是我自学时的笔记,自学的内容来自网络。手打的代码,切不可直接复制过去用,会有好多错别字什么的。

    • Entity SQL   

      类似于SQL语句,

        SELECT VALUE c FROM Entities.Contacts

     VALUE关键字表示返回的是一个对象,原文是return an object,not a row. Used when only a single item is selected.

       Entities.Contacts就是一个EDM(Entity Data Model)

    • LINQ to Entities

      LINQ to Entities 可以看做是LINQ to Object的一个变种,通过LINQ来查询ADO.NET来查询EDM,在底层使用Object Services来完成其功能。

        Object Services:是一组用于查询实体数据模型的类,它可以将这些查询结果转化为强类型的CLR对象。Object Services也可以执行EntitySQL命令。

      通过EntitySQK=l调用Object Services示例

          var queryString="SELECT VALUE c FROM Entitis.Contacts AS c WHERE c.Name='XV'";

           ObjectQuery<Contact> contacts=context.CreateQuery<Contact>(queryString);

    • Entity Client

       从本文开头的图中,很容易就可以知道不管是使用EntitySQL还是LINQ to Entities,最后都要以来EntityClient来完成其工作。当然,也可以直接使用EntityClient,

       通过 EntitySQL,性能较高,但要手动跟踪数据的修改情况。所以,只有当1.需要较高的性能2.以只读方式访问数据时,才考虑使用直接用EntitySQL调用ENtityClient。

       Entity Client不会返回实体对象,它返回的是一组对象模型,如EntityConnection等,类似于ADO.NET提供的对象模型。

    • 直接执行SQL语句

      当底层数据库是关系数据库时,EF可以直接向其发送SQL命令。

    • 使用“扩展的”查询方法

      在实际的开发中,也经常使用扩展的方法+lambda表达式以级联的方式完成查询工作,如:

      var contacts=context.Contacts.Where(c=> c.Name=="XV").OrderBy((foo)=>foo.FirstName);

      事实上,LINQ to Entities查询最终也是转化为扩展方法+lambdas再执行的

  • 相关阅读:
    iOS 定位服务、通讯录、日历、提醒事项、照片、蓝牙共享、麦克风、相机等授权检测
    App项目升级Xcode7&iOS9(续)
    iOS 9之3D Touch
    iOS项目更新之升级Xcode7 & iOS9
    Android 5.0 之SwipeRefreshLayout
    Xcode7真机调试iOS应用程序
    iOS 9之WatchKit for WatchOS 2
    iOS 9之Shared Links Extension(Safari Extensibility)
    iOS多线程的初步研究(十)-- dispatch同步
    iOS多线程的初步研究(九)-- dispatch源
  • 原文地址:https://www.cnblogs.com/xuwanghu/p/4722527.html
Copyright © 2011-2022 走看看