首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Rafy 框架 - 使用 SqlTree 查询

本文介绍如何使用 Rafy 框架 Sql Tree 查询: 除了开发者常用 Linq 查询,Rafy 框架还提供了 Sql 语法树方式来进行查询。...所以当您查询较为复杂,已经无法使用 Linq 查询来实现时,可以考虑使用 SqlTree 查询。 需要更精确地控制 Sql 语句。...例如,Linq 查询中需要两个实体有确切实体关系才会最终生成 Join 语句;但是 SqlTree 则与 Sql 语句无异,开发者可以随意将两个实体对应表进行 Join 操作。...需要更好性能。 SqlTree 查询是 Rafy 框架查询数据(表格、实体核心实现。在框架底层,Linq 查询也都是完全是基于 SqlTree 查询来实现。...上述场景中,其实还可以直接编写 Sql 语句来进行查询。但是这样就很难保证开发者编写 Sql 语句能够在多个数据库上能够正确运行。 查询需要支持仓库数据层扩展点。

2.4K70

Rafy 领域实体框架设计 - 重构 ORM 中 Sql 生成

随着不断使用,我们也不断对 ORM 源码做了不少改动,让它在支持简单语句生成同时,也支持让开发人员直接使用手动编写 Sql 语句查询领域实体。...但是过程中,一直没有修改最核心 Sql 语句生成模块。随着应用不断深入,遇到场景越来越多,需要生成复杂 Sql 语句场景也越来越多。...而这些场景如果还让开发人员自己去编写复杂 Sql 语句,不但框架易用性下降,而且由于写了过多 Sql 语句,还会让开发人员面向领域实体来开发思想减弱。...IQuery 作为描述查询核心类型,被重命名为 IPropertyQuery,所有方法参数也都直接面向 Rafy 实体《托管属性》。但是在整体结构上,还是与原框架保持一致。...Linq Query:为了给开发人员提供更易用接口,需要提供 Linq 语法支持。本层用于解析 Linq 表达式树,并生成最终实体查询对象。

2K70
您找到你想要的搜索结果了吗?
是的
没有找到

金三银四面试:C#.NET面试题中高级篇5-Linq和EF

8.LINQ可视化工具简单介绍一下? 9.LINQ to Object和LINQ to SQL有何区别? 10.除了EF,列举出你知道ORM框架? 11.在哪些类型额项目中你会选择EF? 为什么?...LINQPad支持使用SQL或C#语句(点标记或查询表达式)进行查询。...LINQ to SQL可以将查询表达式转换为SQL语句,然后在数据库中执行。相比LINQ to Object,则是将查询表达式直接转化为Enumerable一系列方法,最终在C#内部执行。...将查询表达式转换为SQL语句并不保证一定可以成功。 10.除了EF,列举出你知道ORM框架?...这个要结合EF特点来说:EF主要是以面向对象思想来做数据库数据操作,对Sql语句能力没什么要求,开发使用效率高!便于上手,一般来说,使用EF框架,肯定会比直接使用ADO.NET,消耗时间多一些。

4K30

PDF.NET 数据开发框架 许可限制 框架源码获取

本套框架思想是借鉴Java平台Hibernate 和 iBatis 而来,兼有ORM和SQL-MAP特性,同时还参考了后来.NETLINQ(本框架成型于2006年,当时还未听说过LINQ)使用风格...映射与查询; BLL层实体对象查询(OQL) DAL层SQL语句和.NET数据访问代码映射(查看 SQL-MAP 原理) 详细说来,框架还包含以下特色功能: 类似LINQ支持ORM实体查询OQL表达式...基于SQL词法分析支持多种数据库高效分页类,你只需要设置SQL语句和分页属性它便能够为你生成特定数据库平台的当前页数据SQL语句。...LINQOQL语法 框架功能演示 表单数据绑定,分页显示-- 数据映射,查询-- SQL-MAP演示(请查看DAL层代码)--  OQL查询(演示请看TestSqlMapEntity 项目) 支持工具...技术限制        当前版本基于.NET2.0以上平台,不支持实体对象对应数据库表外键关系,OQL表达式不支持多实体查询,不支持SQL统计求和分组等,如有这些 复杂查询需求,请使用SQL-MAP

1.2K60

.NET面试题系列 - LINQ to SQL与IQueryable

LINQ to SQL可以将查询表达式转换为SQL语句,然后在数据库中执行。相比LINQ to Object,则是将查询表达式直接转化为Enumerable一系列方法,最终在C#内部执行。...将查询表达式转换为SQL语句并不保证一定可以成功。 IQueryable 理解IQueryable最简单方式就是,把它看作一个查询,在执行时候,将会生成结果序列。...to SQL 下面试图实现一个非常简单查询提供器(即LINQ to xxx),其可以将简单where lambda表达式转换为SQL,功能非常有限。...在LINQ to SQL中lambda表达式首先被转化为表达式树,然后再转换为SQL语句。 我们试图实现一个可以将where这个lambda表达式翻译为SQL语句查询提供器。...拥有连接数据库,简单执行sql语句(不需要返回值,用于DDL或delete语句)和通过执行Sql语句,返回若干实体功能(用于select语句)。

1.6K10

ORM查询语言(OQL)简介--概念篇

SQL核心是对“关系”操作,数据库理论研究证明,SQL是关系上完备,但是当代大多数高级语言都是面向对象,高级语言程序要跟关系数据库进行交互,SQL就成了必须桥梁,由于SQL基于“关系”和程序语言...应用程序调用ORM方法,ORM自动生成相应SQL语句到数据库进行查询,然后ORM将接收到关系数据映射成实体对象。...如果没有使用ORM,那么通常应用程序会拆分出一个数据访问层(DAL)来生成SQL语句并执行相应查询。...ORM查询语言,其实早就有了,从早期HibernateHQL,到MSLinqLinq2SQL,EF其实内部都是使用Linq生成SQL),它们都可以生成复杂SQL语句,它们都是直接作用于ORM...现在,我觉得LINQ也具有了这样能力,而我框架OQL,也有这样能力,所以我大胆称呼它是一个“ORM Query Laguage”,就像SQL是提供给RDBMS查询引擎使用一样,OQL是提供给

2.3K100

ORM查询语言(OQL)简介--高级篇:脱胎换骨

OQL分页 1.2,老版本局限     尽管OQL已经可以解决80%查询需求,剩下20%查询需求我都建议框架用户使用SQL-MAP技术来完成,但对于用户而言,是不太愿意从ORM模式切换到SQL模式...,不能像SQL那么灵活进行各种子查询,其实不支持原因其中一个也是因为OQL查询不支持表别名,另外一个原因是子查询无法获取到父查询表名和字段名。...下面是来自SQLSERVER 联机帮助说明: 子查询也称为内部查询或内部选择,而包含子查询语句也称为外部查询或外部选择。 许多包含子查询 Transact-SQL 语句都可以改用联接表示。...其他问题只能通过子查询提出。在 Transact-SQL 中,包含子查询语句和语义上等效不包含子查询语句在性能上通常没有差别。但是,在一些必须检查存在性情况中,使用联接会产生更好性能。...尽管EF是PDF.NET ORM 强劲对手,但 PDF.NET ORM查询语言OQL,相对于EF查询语言Linq,还是有自己独立特色,OQL比Linq更接近SQLLinq是VS语法糖,本质上

2.4K70

使用OQL+SQLMAP解决ORM多表复杂查询问题

一般情况下,使用ORM框架来完成单个实体查询是很方便,但如果有复杂查询条件,普通ORM组件比较困难,PDF.NET数据开发框架ORM实体查询语言--OQL,使得构造复杂查询条件成为可能...很多ORM框架都只能处理单个实体查询,但如果要连表查询就比较困难了,主要问题是连表查询结果无法投射到一个实体类中,这时候只有动态创建一个类来处理,比如LINQSelect功能。...在PDF.NET数据开发框架中,多表连接查询推荐使用SQL-MAP功能(参加我相关文章),将复杂SQL语句写到SQL-MAP配置文件中,然后使用代码生成器生成SqlMapDal类文件,供业务层使用。...今天有一个同事需要在实体条件中增加一个复杂In查询,由于In条件有4万条,采用SQLIn查询效率极其低下,但是采用Inner Join查询能够提升5倍查询效率,而框架ORM又不支持多表连接查询...,将oql转换成了sql语句,怎么能够再次生成实体类呢?

1.2K60

LINQ to SQL中使用Translate方法以及修改查询SQL

,意思就是不能在LINQ to SQL中显式构造Demo.Item对象。   事实上在RTM之前版本中,以上语句是能运行通过——我是指通过,不是正确。...LINQ to SQL在RTM之前版本有个Bug,如果在查询中显式构造一个实体的话,在某些情况下会得到一系列完全相同对象。...在我之前文章,以及MSDN中示例都只是通过这个DbCommand对象来查看LINQ to SQL所生成查询语句。...改变LINQ to SQL所执行SQL语句   按照一般做法我们很难改变LINQ to SQL查询所执行SQL语句,但是既然我们能够将一个query转化为DbCommand对象,我们自然可以在执行之前改变它...以上扩展所受限制   以上扩展并非无可挑剔。由于Translate方法特点,此类做法都无法充分发挥LINQ to SQL查询所有能力——那就是所谓“LoadWith”能力。

4.8K50

PDF.NET数据开发框架实体类操作实例(for PostgreSQL,并且解决自增问题) PDF.NET数据开发框架实体类操作实例(MySQL)

本篇是 PDF.NET数据开发框架实体类操作实例(MySQL) 姊妹篇,两者使用了同一个测试程序,不同只是使用类库和数据库不同,下面说说具体使用过程。...注:在PDF.NET SOD框架 5.6.0.1121 之后,框架取消了这一个限制,你仍然可以像在其它数据库中那样使用PostgreSQL自增列,实体类无需做任何更改。...--Executed SQL Text: INSERT INTO "tb_user"("Name","Age") VALUES (@P0,@P1) 注意:在PostgreSQL中,SQL语句字段名要使用双引号...,PDF.NET数据开发框架为你自动完成这一切,使得你SQL语句能够很容易移植到PostgreSQL。...********** PDF.NET SOD ORM 控制台测试程序 **************==== 框架核心程序集 PWMIS.Core Version:5.6.0.1111 ====应用程序配置文件默认数据库配置信息

1.5K60

ORM查询语言(OQL)简介--实例篇

[概念回顾]     我们在前一篇《ORM查询语言(OQL)简介--概念篇》中了解到,SQL跟ORM关系,ORM会自动生成SQL语句并执行,但普通ORM框架却不能灵活生成需要SQL语句,我们需要一种具有...EF一般都是使用Linq表达式来编写查询,但Linq方式跟SQL在语法上还是有很大差异,特别是Linq左、右连接查询,跟SQL差异很大。...而PDF.NET框架OQL,应该是三者跟SQL最为接近一种查询语言。    ...将表达式按照层级划分,保证了编写OQL语句正确性,可以避免因SQL语法不熟悉开发人员写出错误SQL语句,另外由于面向对象方式,还可以避免写错数据库表和字段名,在程序编译阶段就发现错误而不是等到程序运行时...,OQL是可以进行其它平台移植 .NET框架低版本支持:框架仅需.NET 2.0 支持,如果引入Linq方式,那么意味着框架需要.net 3.5及以上版本支持 简化条件调用:在Where方法中直接调用实体属性

5K60

Sql Server 2008 为开发带来新特性

您可能熟悉 LINQ(语言集成查询)工具,它允许数据库开发人员使用基于 Microsoft® .NET 编程语言而非普通 T-SQL 语句向数据库发出查询请求。...SQL Server 2008 向 SQL 提供程序提供了新 LINQ 命令,可以允许开发人员直接对 SQL Server 表和列发出 LINQ 命令,从而增强了 LINQ 功能。...这些对象(也称为实体)代表数据库应用程序所需数据,因此开发人员并不需要了解该数据实际存储结构以及数据库架构。新 ADO.NET 实体框架现在允许开发人员使用这些实体来创建数据库查询。...新 MERGE 语句就是一个例子,它允许开发人员在试图插入数据前先检查该数据是否存在。执行 INSERT 语句之前所做这项检查允许数据进行更新。...SQL Server 2008 引入了两种独立数据类型来处理日期和时间数据。不同数据类型转换可以改进许多查询性能,因为无需对数据执行任何操作即可将其用于查询

1.2K80

全面迎接.Net3.0时代到来(WCFWFWPFLINQ)

查询语法外,其他都是我们所熟悉语法,而LINQ查询语法跟SQL查询语法很相识,除了先后顺序。...LINQGroup by不要跟 SQLGroup by 混淆,SQL 由于是二维结构,Group by 一些逻辑受二维结构约束,无法LINQGroup by 这么灵活。...借助于LINQ技术,我们可以使用一种类似SQL语法来查询任何形式数据。目前为止LINQ所支持数据源有SQL Server、XML以及内存中数据集合。...执行于远程服务器上查询语句(例如LINQ to SQL)显然无法实现这个功能。...将LINQ语句换为PLINQ语句极为简单——只需要在查询语句中From子句所指定数据源最后添加.AsParallel()即可。

1.7K100

EntityFramework 外键值映射

如果在 EF OnModelCreating 中配置了实体外键映射,也就是 SQL Server 中 ForeignKey,那么我们在添加实体时候,主实体主键值会自动映射到子实体外键值,并且这个操作在一个...Entity Framework 实体框架形成之旅--实体框架开发几个经验总结 在前阵子,我对实体框架进行了一定研究,然后把整个学习过程开了一个系列,以逐步深入方式解读实体框架相关技术,期间每每碰到一些新问题需要潜入研究...使用实体框架后,主要就是利用LINQ进行一些集合操作,这些LINQ操作虽然有点难度,不过学习清楚了,处理起来也是比较方便。...在实体框架界面层查询中,我们也不在使用部分SQL条件做法了,采用更加安全基于DTOLINQ表达式进行封装,最后传递给后台也就是一个LINQ对象(非传统方式实体LINQ,那样在分布式处理中会出错...如查询条件封装处理如下所示: /// /// 根据查询条件构造查询语句 /// private

4.1K50

如何用ORM支持SQL语句CASE WHEN?

他给示例SQL如下: select HName,case when IsEnable=1 then '启用' else '停用' from tb_User OQL是SOD框架ORM查询语言,它类似Linq...,但是它诞生历史比Linq早,并且更加接近SQL语法。...OQL只解决 80%普通查询,其它复杂查询,应该依托于其它技术,否则会增加OQL复杂性; 复杂查询,可以借助于SOD框架SQL-MAP技术,将SQL语句写在SqlMap.config文件中;...大家看看,这个“计算属性”是不是很好起到了 SQLCASE WHEN效果? 只要忘记了数据库,不要遇到问题就去想如何用SQL语句解决,是不是思路豁然开朗?...SQL语句,我们发现这种写法常常跟我们界面查询有关,也就是这个查询要将原来结果进行一下加工,以方便界面元素使用。

2.1K80

PDF.NET SOD 开源框架红包派送活动 && 新手快速入门指引

本套框架思想是借鉴Java平台Hibernate 和 iBatis 而来,兼有ORM和SQL-MAP特性,同时还参考了后来.NETLINQ(本框架成型于2006年,当时还未听说过LINQ)使用风格...注:框架支持工具指的是集成开发工具,可以连接各种数据库进行查询,生成实体类,SQL-MAP DAL和 SqlMap.config 文件。...语句结果,直接映射到了一个匿名实体类上,注意还有格式化参数功能。...---- 四、SQL-MAP 你是不是曾经或者看到过别人做项目, 大量拼接SQL语句,或者SQL参数化查询后拖沓呈长而又繁琐代码,甚至SQL满天飞? 维护这样代码是不是非常痛苦?...目前做到这个功能除了Linq之外,没有更多ORM具有这个能力,但是对比EF框架查询语言Linq,OQL有自己特色,它跟SQL更为接近,对.NET框架依赖非常小,这使得你有可能将OQL移植到Java

1.6K90

Excel催化剂开源第30波-在Excel上尽情地使用LINQ

对于笔者这样数据分析工作者来说,对数据库有较深掌握,当然少不了对SQL查询深度使用,如果在编程世界中,可以复用这样能力,真的是一件多么令人高兴事情。...在.Net世界中,恰恰提供了这样能力,用LINQ,仿佛回到了写SQL语句查询环境中,对编辑中使用各种对象集合,在排序、筛选、去重等SQL语句常用功能上,在LINQ帮助下,一样可以对代码中集合对象进行这些操作...例如经常需要遍历单元格区域,肯定少不了For Each+IF等代码,但使用了LINQ后,真心变得很简单,特别是操作一个多列表单结构数据时,前面提到笔者喜欢将其转换为DataTable,因为这样数据结构就可以用上了...除了前面提到区域DataTable方法外,其实笔者还用到过LinqToExcel这个类库,同样也是非常好用,有兴趣朋友们,可以搜索了解下,示例文件也是做得很丰富易懂。...{ return Enumerable.Empty(); } } 将Excel里集合对象转换为

1.8K20
领券