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

Rafy 框架 - 使用 SqlTree 查询

本文介绍如何使用 Rafy 框架的 Sql Tree 查询: 除了开发者常用的 Linq 查询,Rafy 框架还提供了 Sql 语法树的方式来进行查询。...例如,Linq 查询需要两个实体有确切的实体关系才会最终生成 Join 语句;但是 SqlTree 则与 Sql 语句无异,开发者可以随意将两个实体对应的表进行 Join 操作。...SqlTree 查询是 Rafy 框架查询数据(表格、实体)的核心实现。框架底层,Linq 查询也都是完全是基于 SqlTree 查询来实现的。...当开发者使用 Linq 查询时,编译器其实是生成一组对象来表示一棵表达式树,而 Rafy 框架会解析这棵树,生成更加底层的 SqlTree 对象,才交给执行引擎去生成真正的 Sql 语句并最终执行。...Linq 的 Labmda 语法的属性表达式(e.Name)需要绑定具体的实体类型(Book e),这导致了必须使用反射去生成表达式树,才能编写通条蚁。

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

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

前言 Rafy 领域实体框架作为一个使用领域驱动设计作为指导思想的开发框架,必然要处理领域实体到数据库表之间的映射,即包含了 ORM 的功能。...IQuery 作为描述查询的核心类型,被重命名为 IPropertyQuery,所有方法的参数也都直接面向 Rafy 实体的《托管属性》。但是整体结构上,还是与原框架保持一致。...33: /// 一般使用在以下情况:当引用属性定义基类,而当前正在对子类进行查询时。...EntityQuery 层的类型实现了 IQuery 对应的接口,并使用领域实体的相关 API 来实现从实体到表、实体属性到列的转换。...框架使用测试驱动的方法开发,开发时是先编写相关的测试用例,再实现内部代码。

2K70

访问者模式ASM框架使用

访问者模式的定义是:封装一些作用于某种数据结构的各元素的操作,它可以不改变数据结构的前提下定义作用于这些元素的新的操作。...ASM框架使用访问者模式封装了class文件结构的各项元素的操作,我们将通过实现一个简单版的ASM框架学习访问者模式ASM框架的应用。 首先定义类访问者接口ClassVisitor,代码如下。...由于字段元素也是一个数据结构,也可使用访问者模式封装字段结构各项元素的操作。如通过调用字段访问者的visitAnnotation方法可为字段添加一个注解。...文件结构,字段表可以有零个或多个字段,方法表可以有一个或多个方法,因此我们需要使用数组存储字段表和方法表。...ASM框架,可调用ClassWriter的toByteArray方法获取生成的类的class字节数组,我们可以模拟实现toByteArray方法,ClassWriter添加showClass方法,

2K40

AOP编程简介及其Spring框架使用

AOP的一些术语: 切面(aspect):切面用于组织多个advice,advice切面定义。 连接点(joinpoint):程序执行过程明确的点,spring,连接点总是方法的调用。...增强处理(advice):AOP框架在特定切入点执行增强处理。 切入点(pointcut):可以插入增强处理的连接点。 本示例是使用基于注解的方式,另外还有基于xml的。...结果很明显,这就是aop的作用,不改动源代码的基础上,对源代码进行增强处理。...---- after增强跟before差不多,只不过一个目标方法之前,一个在后。...和程序描述的一样。 ---- 注: execution(* Before.*.*(..)) && args(pass,name) 第一个*表示目标方法的返回值任意。

74330

盘点 .NET 比较流行的开源的ORM框架

支持 Join 查询、Union all 、Subquery 支持配置查询 支持 DbFirst 从数据库导入实体类,或使用生成工具。...开发人员使用Linq语言,对数据库操作如同操作object对象一样省事。 EF有三种使用场景: 1、从数据库生成Class。 2、由实体类生成数据库表结构。...架构上,它比 Dapper、Massive 或 PetaPoco 等微 ORM 高出一步,因为您使用 LINQ 表达式而不是魔术字符串,同时代码和数据库之间维护一个薄抽象层。...但是,它不像 LINQ to SQL 或实体框架那么重。没有更改跟踪,因此您必须自己进行管理,但从积极的方面来说,您可以获得更多控制权并更快地访问您的数据。...更好的参数替换支持,包括从对象属性获取命名参数。 通过使用 DynamicMethod 生成消除 Linq 和快速属性分配来获得出色的性能。 查询语言是好的 ole SQL。

3.9K41

Rafy Linq 查询支持(根据聚合子条件查询聚合父)

为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了。但是只支持了一些简单的、常用的条件查询,支持的力度很有限。...即间接使用引用实体的属性来进行查询,在生成 Sql 语句时,将会生成 INNER JOIN 语句,连接上这些被使用的引用实体对应的表。...例如,书籍管理系统,Book (书)为聚合根,它拥有 Chapter (章)作为它的聚合子实体,而 Chapter 下则还有 Section(节)。...要实现这种场景的查询,我们可以仓库的数据层,使用下面的 Linq 语法: public BookList LinqGetIfChildrenExists(string chapterName) {...我们可以仓库的数据层,使用下面的 Linq 语法: public BookList LinqGetIfChildrenExistsSectionName(string sectionName) {

2.7K70

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

EF一般都是使用Linq表达式来编写查询,但Linq方式跟SQL语法上还是有很大的差异,特别是Linq的左、右连接查询,跟SQL差异很大。...,OQL是可以进行其它平台移植的 .NET框架低版本支持:框架仅需.NET 2.0 支持,如果引入Linq方式,那么意味着框架需要.net 3.5及以上版本支持 简化条件调用:Where方法中直接调用实体类的属性...五、OQL多实体关联查询     SQL多表查询的时候,表的关联查询分为内联 Inner Join,左连接Left Join,右连接 Right Join,OQL通过对实体类进行关联查询实现SQL类似的操作...,可以不用定义这个“ViewModel”, MapToList方法,直接使用匿名类型,例如下面的例子: OQL q=OQL.From(entity1) .Join(entity2)...身为“一线码农”,框架的每个方法使用都历历目,但广大PDF.NET的用户朋友或许并不知道这些方法的原理是什么,怎么使用,各种使用方法有什么区别,这些问题成为了前来咨询我框架使用的每个框架用户的问题,而我

4.9K60

Linq基础知识小记四之操作EF

1、EF简介 EF之于Linq,EF是一种包含Linq功能对象关系映射技术.EF对数据库架构和我们查询的类型进行更好的解耦,使用EF,我们查询的对象不再是C#类,而是更高层的抽象:Entity Data...Linq To Sql之于EF Linq To Sql和EF师出同门,EF支持LINQ to SQL几乎同样的查询功能,所以使用Linq To Sql学到的查询技术同样适用于EF,LINQ to SQL...是一个轻量级的ORM框架,旨在为Microsoft SQL Server数据库提供快速的应用程序开发,其优点是易于使用、简单、高性能. 2、EF实体类 EF允许我们使用任何类来表示数据(但是必须实现特定的接口来实现如导航属性等的功能...创建一个edmx最简单的方法就是Visual Studio添加一个”ADO.NET Entity Data Model” 项目,然后就是根据提示来安装.这种方法不但生成了.edmx文件,还为我们生成实体类...,EF实体类对应EDM的概念模型.MS提供了一个可视化工具来帮助我们生成EDM.通过设计器我们可以任意的设计EDM中表和实体间的关系,当然也可以通过改写.edmx文件来调整我们EDM,通过设计器和修改

1.9K60

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

欢迎使用 PDF.NET 数据开发框架 (Ver 4.0) 关于框架的名字由来          我设计www.pwmis.cn 站点(原域名已经过期,现在正准备使用新域名http://www.pwmis.com...本套框架的思想是借鉴Java平台的Hibernate 和 iBatis 而来,兼有ORM和SQL-MAP的特性,同时还参考了后来.NET的LINQ(本框架成型于2006年,当时还未听说过LINQ使用风格...映射与查询; BLL层实体对象查询(OQL) DAL层SQL语句和.NET数据访问代码映射(查看 SQL-MAP 原理) 详细说来,框架还包含以下特色功能: 类似LINQ的支持ORM实体类查询的OQL表达式...本框架 OQL的基本设计LINQ或者说本人知道 LINQ之前,另外,.NET3.5框架才正式支持LINQ,而我们公司的一个产品却因为采用了3.5框架安装部署不方便成为市场和客服常常抱怨的理由。...北京某金融咨询公司银行数据应用项目,PDF.NET Ver2.0,作为系统核心框架部分。 2010。XX银行XX市分行基金营销系统,PDF.NET Ver4.0,作为系统核心框架部分。  。。。

1.2K60

EntityFramework数据持久化复习资料5、LINQ概述与应用(超终点)

从数据库生成Class,2.由实体类生成数据库表结构,3.通过数据库可视化设计器设计数据库,同时生成实体类。 ORM (对象关系型映射)是将数据存储从域对象自动映射到关系型数据库的工具。...这个过程就是通过ORM框架来完成的,操作对象就是操作数据库也是通过ORM来完成的。ORM框架就是做对象和数据库的映射的。 那么EntityFramework的作用是什么?...我的理解就是大大简化数据库操作的,举个例子:没有使用EF前,我们要编写复杂的SQL语句,而使用了EF之后,将会减少编写复杂的SQL语句过程。...LINQ,可以使用与查询数据库相同的编码模式来查询和转换XML文档、SQL数据库、ADO.NET数据集以及.NET集合的数据,并支持LINQ查询的任何格式的数据。...【join】进行链接,匹配id处理笛卡尔积的时候必须使用【equals】做判断。

2.1K20

优化OEA的聚合SQL

之前写过几篇关于聚合对象SQL的文章,讲的是如果设计框架使用一句SQL语句来加载整个聚合对象树的所有数据。...而列名的生成原来的模式已经使用了“表名+列名”的格式进行了约定,所以现在我们只需要把“描述如何加载的描述性数据”进行管理就可以了。...有了这些数据,则可以框架内部生成聚合SQL,框架内部按照它们进行大表到聚合对象的加载。以下,我将这些数据称为聚合对象的“加载选项”。    ...它其实也就是整个过程核心对象,由于时间有限(预计只有一天时间完成整个设计及代码实现),而且这个对象并不会直接暴露在外面,所以这直接使用了最简单的链表类型来表示链式的加载选项。...框架对象的聚合加载的实现,和手写时一样,也是基于原有的ReadFromTable方法的,也不复杂,贴下代码,不再一一描述: /// /// 聚合实体的加载器 /// </summary

1.6K70

LINQ驱动数据的查询功能

一、LINQ概念       LINQ是微软.NetFramework3.5新加入的语言功能,语言中以程序代码方式处理集合的能力。...命名空间都已实现 IEnumerable,一般来说.NET内的所有集合对象都能使用LINQ进行处理,如果不引用System.Linq命名空间,所有Linq功能都无法使用。...2.3 类型推论       使用匿名类型Linq变量类型无法确定,如果试用IEnumerable就失去强类型的好处,.NET3.5只要使用Linq并且以select new来产生结果的查询...,其变量类型声明会使用var类型表示,var类型代表编译器腿短这个变量的类型,LINQ复杂查询如果是嵌套的错误率较高,所以用var替代。...Join(): linq语句中使用 List list1 = new List() { 1, 3, 5, 9, 7, 10 }; List list2

2.9K90

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

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

1.2K60

ADO.NET 实体框架概述

当与 LINQ to Entities结合使用时,由于实体框架从概念模型中生成强类型化类,还有助于降低编译时错误的数量。实体框架生成开发人员能够依据其编写代码的概念模型。...这些数据访问技术使开发人员可以与 EDM 的概念实体交互。EDM 的各个层以 XML 文件形式存在; 实体数据模型 实体框架核心位于其模型实体框架支持表示数据库的关系架构的逻辑存储模型。...本示例,以逻辑模型表示关系数据库的构架,业务实体表示概念模型。实体框架使用映射层模型之间搭建了桥梁。...实体框架可将针对概念模型编码的所有命令映射到逻辑模型。 ? 概念模型是使用概念架构定义语言 (CSDL) XML 文件定义的。CSDL 定义应用程序的业务层所知道的实体和关系。...逻辑模型(表示数据库架构)是使用存储架构定义语言 (SSDL) XML 文件定义的。例如,您可能在概念模型中有一个实体,该实体实际上从数据库的多个表中派生其数据。

1.4K50

Unity3d如何使用MVC框架(Unity3D)

MVC桌面应用程序,以及网页架构上面用的比较多,那么怎么应用到Unity3d呢,下面就带大家去了解这个设计框架,以及如何在Unity应用。...MVC开始是存在于桌面程序的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。...模型-视图-控制器(MVC)是Xerox PARC二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用。...组合模式只视图层活动, 视图层的实现用的就是组合模式,当然,这里指的实现是底层的实现,是由编程框架厂商做的事情,用不着普通程序员插手。...即使Web因为http壁垒的原因导致真正的实现有点走样,但是原理核心和思路哲学却是不变的。 最后是策略模式。

2K30

打造轻量级的实体类数据容器

但是,这些“数据容器”还是显得比较重量级,里面有太多要交互的子对象,为此我PDF.NET(PWMIS数据开发框架定义了一个非常轻量级的实体数据容器,它存储数据的原则很简单,就是一个object[]...();             var mapUser1 = ec.Map().ToList (); Map方法,可以映射出任意PDF.NET实体类,或者其它自定义的POCO实体类,而且没有映射次数限制...先看一个例子,我们假设系统还存在一个实体类 Group,我们使用PDF.NET的OQL表达式写一个支持两个实体连接查询的语句: OQL q=OQL.From(user)          .InnerJoin...那么完美,人家LINQ是近水楼台先得月,MS自家的苗子,可以依靠“编译器语法糖”来写出优美的LINQ程序,但我们的这个实现从原理上说非常轻巧,众多非官方的ORM框架,真正支持了实体类的多表连接查询!...有关OQL的多实体连接查询仅在PDF.NET框架V4.1以后版本支持,该功能作为框架的一项重要功能扩展,已经商业项目中开始使用,感兴趣的朋友可以一起研究。

673100

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

void Add(); void Update(); void Delete(); List GetAll(); T GetOne(int id); } 使用充血实体类,使用上还是比较方便的...”; OQL:ORM查询语言,以实体类对象为操作对象,生成查询表达式,供实体查询对象使用。.../view/1137652.htm 巴科斯范式的内容   双引号的字("word")代表着这些字符本身。...现在,我觉得LINQ也具有了这样的能力,而我框架的OQL,也有这样的能力,所以我大胆的称呼它是一个“ORM Query Laguage”,就像SQL是提供给RDBMS的查询引擎使用一样,OQL是提供给...pdf.net 主推的应该是:linq 般好用,但是性能卓越 回复: LINQ是.NET独有的特性,“语言集成查询”,它是集成.NET语言中的,这是它的先天优势。

2.3K100

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

实体框架EF是http://ADO.NET的一组支持开发面向数据的软件应用程序的技术,是微软的一个ORM框架。...(表实体跟表之间的相互转换) ORM框架有很多,EF框架是ORM框架的其中一种,是实现了ORM思想的框架。...大部分LINQ语句是最终结果的第一个元素被访问的时候(即在foreach调用MoveNext方法)才真正开始运算的,这个特点称为延迟执行。...LINQ to SQL可以将查询表达式转换为SQL语句,然后在数据库执行。相比LINQ to Object,则是将查询表达式直接转化为Enumerable的一系列方法,最终C#内部执行。...Unchanged:实体将由上下文跟踪并存在于数据库,其属性值与数据库的值相同。 Added:实体将由上下文跟踪,但是在数据库还不存在。

3.9K30
领券