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

使用OQL“语言”构造ORM实体复杂查询条件

OQL”语言“ 是PDF.NET数据开发框架实体对象查询语言,一直以来,ORM复杂查询条件都是困扰ORM问题,所以很多时候不得不舍弃ORM,直接手工拼接SQL。...我们来看看OQL是怎么解决这些问题,现在举一个今天同事遇到问题: 有这样一个实体类 MyEntity,实体具体定义在此忽略,兴趣朋友请看我博客。...(e.F2); //等于实体类属性值比较可以直接这样写 cmp.Compare(e.F2) OQLCompare cmpResult=null; //处理字段F3条件 string[] ValueF3...); 最后就可以到数据库查询实体了,非常简单: List result=EntityQuery.QueryList(q); 至此,一个复杂ORM查询使用OQL语言就完成了...PDF.NET官网:http://www.pwmis.com/sqlmap 更多实例程序下载。

1.5K60

在OQL上使用UPDLOCK锁定查询结果,安全更新实体数据

当我们用UPDLOCK读取记录时可以对取到记录加上更新锁,从而加上锁记录在其它线程中是不能更改只能等本线程事务结束后才能更改。...上面这个例子可能比较抽象,让我们举一个实际例子。 假设有一个投资产品表,当我们查询到该产品记录后,要进行一系列判断,最后对该记录进行更新。该记录状态会影响到下一个人查询到此记录处理。...下面我们来看看用SOD框架OQL怎么处理。...db.Commit(); 上面的操作,首先在AdoHelper对象上开启事务,然后查询投资产品实体时候在With方法上加上 OQL.SqlServerLock.UPDLOCK 更新锁,接着进行复制业务处理...,然后更新此实体记录,之后还有复杂其它业务操作,最后提交事务。

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

使用PDF.NET数据开发框架实体操作语言OQL构造复杂查询条件

,主要特点是具有iBatis特点SQL-MAP功能和框架独特实体对象查询语言--OQL,下面我们使用OQL构造一个复杂实体查询。...首先定义两个实体类:用户类和订单类,可以使用框架提供实体类生成器生成,下面是详细代码: /*   本类由PWMIS 实体类生成工具(Ver 4.1)自动生成  http://www.pwmis.com.../sqlmap  使用前请先在项目工程中引用 PWMIS.Core.dll  2010/12/8 15:01:22 */ using System; using PWMIS.Common; using ... IN ( SELECT UID  FROM Table_Order    Where OrderDate >= @CP1     ) OK,到此为止,我们可以使用我们OQL查询出真正实体集合了:...PDF.NET宗旨就是为了最大化精简你数据开发,兴趣请看我博客其它文章或者到官网:http://www.pwmis.com/sqlmap

1.6K50

使用JPA原生SQL查询在不绑定实体情况下检索数据

在这篇博客文章中,我将与大家分享我在学习过程中编写JPA原生SQL查询代码。这段代码演示了如何使用JPA进行数据库查询,而无需将数据绑定到实体对象。...通过本文,你将了解如何使用原生SQL查询从数据库中高效地检索数据。...引言Java Persistence API(JPA)是Java EE标准一部分,它提供了一种方便方式,可以使用Java对象和实体与数据库交互。...然而,在某些情况下,你可能希望直接使用SQL执行复杂查询,以获得更好控制和性能。本文将引导你通过使用JPA中原生SQL查询构建和执行查询,从而从数据库中检索数据。...查询使用我们之前构建SQL字符串创建

44430

(PDF.NET框架实例讲解)将任意复杂SQL查询映射成实体

实际上,不管是单表,视图,存储过程,SQLSERVER表值函数,自定义SQL查询,甚至是任意复杂SQL查询,都可以用一个SQL语句表示,只要我们ORM框架能够实现将SQL语句查询结果映射成实体类...我们使用PDF.NET(PWMIS数据开发框架实例讲解一下这个过程。...5,经过上面的步骤,我们实体类文件生成好了,下面做一些准备工作,看看如何在项目里面使用。     先打开自定义查询实体类配置文件 EntitySqlMap.config文件,我们做一下修改: ?...另外该文件应该和实体类文件放到同一个目录下面。 ? 最后,我们看看如何在项目里面使用这样实体类: ?...自定义查询实体类跟普通PDF.NET实体使用方式类似,都需要OQL表达式操作,例如选取要使用字段,设置Where条件,这里为了简便,仅仅调用了OQL.Select()方法,选取查询出来全部列

2.5K80

EF基础知识小记六(使用Code First建模自引用关系,常用于系统菜单、文件目录等层级之分实体)

日常开发中,经常会碰到一些自引用实体,比如系统菜单、目录实体,这类实体往往自己引用自己,所以我们必须学会使用Code First建立这一类模型....以下是自引用数据库关系图: ok,下面开始介绍从零创建一个Code First版引用模型. 1、往目标项目中添加EF包,通过NuGet程序包添加 导入相关程序集. 2、创建自引用实体类...(cat => cat.Subcategories).WithOptional(cat => cat.ParentCategory); } } 4、截至这一步,分析下代码,典型目录实体...,从实体类可以看出该实体拥有单个父类型、子类型集合,这里比较特殊是,这里父类型和子类型都是自己,也就是自引用.注意:一个没有付类型实体,该实体就是整个继承类型最顶端. 5、编写测试代码:...,则跳出递归循环 } 简单解释下测试代码逻辑: (1)、从所有的节点中获取没有父节点节点,该节点为顶级节点 (2)、然后通过递归将该顶级节点下面的所有的子节点全部遍历出来,每当递归到节点含有子节点集合

84960

Rafy 领域实体框架 - 树型实体功能(自关联表)

而针对这样场景,许多ORM框架都不做默认处理,开发者往往每次都要做重复工作:建立类似结构表,编写关系处理代码,编写查询代码……而这种场景经常会出现,所以 Rafy 实体框架中,默认就支持了树型实体一系列功能...功能及使用说明 在 Rafy 中树型实体功能,只需开发者使用一行代码为指定实体打开这个功能,框架会自动完成以下工作: 自动添加实体引用关系。自动生成数据库自关联表。...自动添加实体引用关系 实体基类上已经默认带有以下几个属性,表达树节点之间关系。 ? 当某个实体类型被配置为树型实体时,这几个属性才会有意义。...所以这个属性值非常重要,只能由框架来自行维护,而不能由开发者设置。...但是也会有所区别,例如 GetAll 方法在查询非树实体时,查询实体列表中包含所有的实体;但是在查询树型实体时,结果会按照树结构进行加载,即列表中只会有根节点,其它节点则分别在根节点下级节点中

1.5K80

MyBatis结果映射 - resultMap配置

简介 MyBatis是一个优秀持久层框架,它支持灵活结果映射机制,使得数据库查询结果可以方便地映射为Java对象。...在MyBatis中,resultMap是一个关键配置,用于定义数据库查询结果与Java对象之间映射规则。本文将深入探讨resultMap配置和使用,带你了解如何优雅地进行结果映射。...基本resultMap配置 步骤1:定义实体类 首先,假设我们一个User实体类,包含id、username和email属性。...步骤3:查询结果映射 在Mapper.xml中,我们可以使用元素来执行查询,并在resultMap属性中引用之前定义resultMap配置。...关联映射 如果查询结果包含多个实体之间关联关系,可以通过和元素进行关联映射。

34610

Rafy 领域实体框架示例(1) - 转换传统三层应用程序

Rafy 领域实体框架发布后,虽然帮助文档,许多朋友还是反映学习起来比较复杂,希望能开发一个示例程序,展示如何使用 Rafy 领域实体框架所以,本文通过使用 Rafy 领域实体框架改造一个传统三层架构应用程序...——“服装进销存”系统,来讲解如何使用 Rafy 领域实体框架进行数据库应用程序快速开发,以及替换为使用 Rafy 框架后带来一些新功能。...还没有下载 Rafy 框架同学,可以在《Rafy 框架发布》文中下载完整安装包。) 接下来,将说明如何进行代码转换,使用 Rafy 开发一个典型数据库应用程序。...原程序说明 考虑到要更好地演示如何使用 Rafy 框架开发一个传统管理系统,决定挑选一个开源系统进行改造,而这个系统应该是简单、常见三层架构,这种系统大家都比较熟悉,这样就可以更加快速理解框架使用了...对于一个依赖关系较为严格三层系统来说,要使用 Rafy 框架替换其中数据访问层、业务逻辑层以及界面查询功能,是比较简单。本次转换,我按照以下步骤进行: 1.

99850

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

前言 Rafy 领域实体框架作为一个使用领域驱动设计作为指导思想开发框架,必然要处理领域实体到数据库表之间映射,即包含了 ORM 功能。...随着不断使用,我们也不断对 ORM 源码做了不少改动,让它在支持简单语句生成同时,也支持让开发人员直接使用手动编写 Sql 语句查询领域实体。...旧代码讲解 最初采用 Lite ORM 是一个轻量级 ORM 框架,采用在实体对象上标记特性(Attribute)声明实体元数据,并使用链式接口来作为查询接口以方便开发人员使用。...EntityQuery 层中类型实现了 IQuery 中对应接口,并使用领域实体相关 API 实现从实体到表、实体属性到列转换。...重构同时,我们为能想到场景都编写了测试用例: 目前,框架版本也升级到了 2.23.2155。 兴趣同学,了解、下载最新框架,请参考:《Rafy 领域实体框架发布!》。

2K70

Spring认证中国教育管理中心-Spring Data MongoDB教程十四

18.5.9.使用文档参考 Using@DocumentReference提供了一种灵活方式引用 MongoDB 中实体。虽然目标与使用DBRefs时相同,但存储表示不同。...映射框架不处理级联保存,因此请确保单独保留引用实体。 添加对现有实体引用引用Account实体表示为其_id值数组。...DocumentReference(lookup)允许定义可能与_id字段不同过滤器查询,因此提供了一种灵活方式定义实体之间引用,如下面的示例所示,其中Publisher书籍 由其首字母缩略词而不是内部...使用该#self变量访问Publisher文档中值,并在此检索中Books使用匹配publisherId. 了上述所有内容,就可以对实体之间所有类型关联进行建模。...可以使用其键从参考文档中读取集合名称。 我们知道在查找查询使用各种 MongoDB 查询运算符很诱人,这很好。但是几个方面需要考虑: 确保有支持您查找索引。

5.7K10

.NET ORM “SOD蜜”--零基础入门篇

可以看到,SOD实体类还是比较简单,它没有使用特性申明数据库信息,这意味着你可以在运行时修改实体类影射主键,自增字段,表名称等数据库元数据,并且不需要反射,这些特性构成了SOD框架简单而强大基础...二、ORM之增,删,改 SOD框架ORM功能跟通常ORM框架不同,SOD框架实体类上并没有数据查询和持久化方法,所以SOD实体类是“非常纯粹实体类,你可以把它看作是一个数据容器,或者用来当作...= null; //查询到用户实体类,表示登录成功 } 这里我们使用了SOD框架ORM查询语言--OQL,它结构非常类似于SQL,你可以认为OQL就是对象化SQL语句。...= null; //查询到用户实体类,表示登录成功 } 3.7,使用实体类主键查询 SOD实体“主键”字段是可以修改,这样你可以随时修改它,就像实体类本来主键一样,用它填充数据...所以,SOD框架使用非常灵活,你可以根据你偏好,习惯,环境,灵活使用,而且也容易扩展,因此,相对于EF这样ORM框架,SOD框架ORM功能没有任何束缚,它自由,灵活,而且轻量,容易扩展,但不妨碍它强大

1.1K70

DataSet灵活,实体方便,DTO效率:SOD框架数据容器,打造最适合DDDORM框架

我们还可以通过查询进一步验证这种情况空值: 假如我们ORM查询语言OQL查询并没有指定要查询实体Age属性,那么结果user对象仅有2个数据,并没有3个数据: OQL...原来,实体类内部一个类似于“名-值对”2个数组,用于存储实体类映射数据库字段名和字段值,这个结构就是SOD框架  PropertyNameValues 类,定义很简单: public...好处大大,这意味着 PropertyNames,PropertyValues 长度是可变,就像前面的例子,查询了Age属性,实体3个,而不查询,那么值只有2个。...假设实体50个属性,本次只查询了2个属性,那么SOD实体类实际传输数据就只有2个,而不是50个,这将大大节省数据传输量。 这个可以通过SOD实体序列化结果验证。...AutoMapper之类工具,而在SOD框架内,使用了速度最快属性拷贝方案,参见之前我写博客文章:  《使用反射+缓存+委托,实现一个不同对象之间同名同类型属性值快速拷贝》 另外,如果是从实体类到

2.6K90

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

1、EF简介 EF之于Linq,EF是一种包含Linq功能对象关系映射技术.EF对数据库架构和我们查询类型进行更好解耦,使用EF,我们查询对象不再是C#类,而是更高层抽象:Entity Data...EF优点:在数据库架构和实体之间映射提供了更好灵活性,还通过程序支持除了SqlServer之外数据库....是一个轻量级ORM框架,旨在为Microsoft SQL Server数据库提供快速应用程序开发,其优点是易于使用、简单、高性能. 2、EF实体类 EF允许我们使用任何类表示数据(但是必须实现特定接口实现如导航属性等功能...,具体关于跟多属性配置细节请参考EF CodeFirst 约束配置 注:上面的单个类并不能单独使用,因为我们在使用EF时,并不是直接查询数据库,而是查询一个更高层模型,该模型叫做Entity Data...映射规范,用来描述概念模型如何映射到存储模型 这个在我EF基础知识小记一也有介绍.

1.9K60

Rafy 框架 - 使用 SqlTree 查询

本文介绍如何使用 Rafy 框架 Sql Tree 查询: 除了开发者常用 Linq 查询,Rafy 框架还提供了 Sql 语法树方式进行查询。...查询使用实体类型(Chapter)和实体托管属性(Chapter.NameProperty)定义表和字段。 更多查询语法示例,见本节后面的更多示例。...例如,Linq 查询中需要两个实体确切实体关系才会最终生成 Join 语句;但是 SqlTree 则与 Sql 语句无异,开发者可以随意将两个实体对应表进行 Join 操作。...需要更好性能。 SqlTree 查询是 Rafy 框架查询数据(表格、实体核心实现。在框架底层,Linq 查询也都是完全是基于 SqlTree 查询实现。...更多示例 下面将会列出一些常见 SqlTree 查询示例。通过这些代码,您将学习到如何在各种查询需求下使用 SqlTree。

2.4K70

高级框架-springDate-JPA 第二天【悟空教程】

而在这种实现了 ORM 思想框架中(如 JPA),可以让我们通过操作实体类就实现对数据库表操作。所以今天我们学习重点是:掌握配置实体之间关联关系。 第一步:首先确定两张表之间关系。...* 删除主表数据: * 从表数据引用 * 1、不能删除 * 2、如果还想删除,使用级联删除 * 没有从表数据引用:随便删 * 在实际开发中,级联删除请慎用!...它利用类与类之间关系检索对象。 例如:我们通过 ID 查询方式查出一个客户,可以调用 Customer 类中 getLinkMans()方法获取该客户所有联系人。...对象导航查询使用要求是:两个对象之间必须存在关联关系。...通过配置方式设定当我们在需要使用时,发起真正查询

2.5K10

Rafy 框架 - 幽灵插件(假删除)

这样,开发人员需要实现假删除功能时,只需要引用该插件后,系统中所有删除实体都自动变为‘幽灵’,同时这些幽灵数据在仓库所有查询中都将被自动过滤。...这个属性表示这个实体是否为‘幽灵’,即已经删除数据。 开发者可以使用 Meta.EnablePhantoms() 为某个指定实体类型开启‘幽灵’功能。...在使用 GetAll 查询所有实体时,框架自动加上一 IsPhantom = false 过滤条件: SELECT * FROM [User] WHERE [User]....,框架自动分析出当前查询 SQL 树,并在主查询上加上 IsPhantom = false 过滤条件。...兴趣同学,可以查看 Rafy 框架源码。 PS:该文已经纳入《 Rafy 用户手册》中。

1.2K80

什么是JPA_论文题目不能用浅谈吗

所谓规范即只定义标准规则(如注解、接口),不提供实现,软件提供商可以按照标准规范实现,而使用者只需按照规范中定义方式来使用,而不用和软件提供商实现打交道。...JPA 主要实现有Hibernate、EclipseLink 和OpenJPA 等,这也意味着我们只要使用JPA 开发,无论是哪一个开发方式都是一样。...JPA提供技术: ORM映射元数据:JPA支持XML和JDK 5.0注解两种元数据形式,元数据描述对象和表之间映射关系,框架据此将实体对象持久化到数据库表中; JPA API:定义规范,以操作实体对象...ID增长 需要定义一个TableGenerator,在@GeneratedValue中引用。...可使用joinColumns标注外键、使用 @Version实现乐观锁。 关联关系还可以定制延迟加载和级联操作行为。

1.5K20

EF Core关系配置

执行实体相关查询原生SQL语句 如果要执行原生SQL是一个查询语句,并且查询结果也能对应一个实体,就可以调用对应实体DbSetFromSqlInterpolated()方法执行一个查询SQL...只能单表查询,不能使用Join语句进行关联查询。但是可以在查询后面使用Include()进行关联数据获取。...SQL EFCore如何跟踪实体数据变化 快照更改跟踪:首次跟踪一个实体时候,EF Core 会创建这个实体快照。...) 更新到数据库; “已删除”实体,SaveChanges() 从数据库删除; 查看实体状态: 使用DbContextEntry()方法获得实体在EF Core中跟踪信息对象EntityEntry...EF Core优化之AsNoTracking 如果通过DbContext查询出来对象只是用来展示,不会发生状态改变,则可以使用AsNoTracking() “禁用跟踪”。

6210

“设计应对变化”--实例讲解一个数据同步系统

注意:我们这里并没有使用SQL查询映射实体类,因为各种不同数据库日期函数都不尽相同,这样做实体类就没有通用性,所以我们还是手工增加一个计算年龄属性。...4,如何使用数据同步实体类 好了,两个系统中用户实体类都定义完成了,由于它们都继承自IUser接口,所以它们之间完全可以交换数据,最后剩下工作就是将这两个实体类放到两个程序集中分别编译,例如 系统A...,将实体类中数据,插入或者更新到目标数据库中; 数据查询和更新操作都由PDF.NET数据开发框架内置支持,不需要写一行SQL语句。...记得上次外网服务器剩余内存较多,SQLSERVER只占用了150M,这次占了500多M,程序无论如何也不能一次查询出50W数据,老是查询超时,但这个数据着急要,只有想办法了。  ...OK,所需工作完成,我们只改了一下实体映射类型和编写了一个实体查询文件,编译项目,重新发布,开始执行,剩下只是每次修改一下配置文件查询条件了,比如我现在正在使用条件: where ID

95670
领券