zoukankan      html  css  js  c++  java
  • Entity SQL 说说IN关键字

    Entity SQL(ESQL) 是专门为ADO.NET Entity Framework(EF)提供查询更新数据而产生的,也就是ESQL是EF的附属部件。ESQL大大提高了EF的使用性,我们就可以像使用SQL查询Table一样很方便地对EF生成的实体集合,尽管它还是加载配置文件,把ESQL转化成SQL来对Table进行查询,但这可以算是一个非常具有革命性的东东。

    ESQL乍一眼看上去,跟SQL没有太大区别,但事实上却不尽其然,这不,就遇到了ESQL中的IN关键字,它跟SQL的IN关键字不尽相同,不能在IN后面跟一个查询,而只能跟一个集合类型。不知道是因为在EF设计时就不想再让我们用IN后面跟查询的方式了呢,还是算是ESQL的一个缺陷,我不得面知,暂时就算是缺陷吧!那么在SQL中In后面跟一个查询的这种方式,如:SELECT * FROM A WHERE A.ID IN(SELECT ID FROM B),在ESQL里面怎么来完成类似上面的查询呢?暂时我没有找到微软官方的相关解决方案,我就不得不自己想办法解决这个问题啊,不让我们使用带查询的IN,那我就用别的来代替嘛。经过研究,我发现了另一个可以代替In的写法,就是使用ESQL里面的Exists来弥补ESQL中IN的缺陷。如上面的查询,我们完全可以写成SELECT A FROM A WHERE EXISTES(SELECT B.ID FROM B WHERE B.ID=A.ID)。

    唉,问题算解决了吧!不过EXISTS的运行效率,不敢让人恭维,只能在小数据量时使用,如果数据过多,那就死翘翘了。好在我现在的数据量不是很大,也算是勉强完成了任务,可是认真想下,它毕竟是个隐患!

  • 相关阅读:
    mysql相关笔记
    qt杂项
    rpm离线安装整理
    linux fopen个数限制的问题(文件描述符限制)
    解决free():invalid pointer:0x00000000000000155455 ****的问题。
    linux c获取系统时间戳
    ubuntu QT Creater 安装
    LinkedHashMap如何保证顺序性
    HashMap原理(二) 扩容机制及存取原理
    HashMap原理(一) 概念和底层架构
  • 原文地址:https://www.cnblogs.com/taofh/p/1570239.html
Copyright © 2011-2022 走看看