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

Rafy 框架 - 使用 SqlTree 查询

本文介绍如何使用 Rafy 框架中的 Sql Tree 查询: 除了开发者常用的 Linq 查询,Rafy 框架还提供了 Sql 语法树的方式来进行查询。...本文包含以下章节: 快速示例 使用场景 代码段 更多示例 快速示例 SqlTree 查询是直接以一种类似于 Sql 语法的格式,并结合实体托管属性 IManagedProperty 来进行查询的查询模式...查询中使用的是实体类型(Chapter)实体的托管属性(Chapter.NameProperty)来定义表字段。 更多的查询语法示例,见本节后面的更多示例。...SqlTree 查询是 Rafy 框架查询数据(表格、实体)的核心实现。在框架底层,Linq 查询也都是完全是基于 SqlTree 查询来实现的。...但是,SqlTree 的语法是基于托管属性框架的,它不需要使用确切的实体属性表达式,只需要使用托管属性的运行时对象 IManagedProperty 即可(Book.NameProperty)。

2.4K70

Hibernate学习笔记1

对象关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联继承关系,而在数据库中,关系数据无法直接表达多对多关联继承关系。...为什么使用hibernate框架 Hibernate对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码 Hibernate是一个基于jdbc的主流持久化框架,是一个优秀的orm实现...documentation目录:存放hibernate的相关文件与API lib目录:存放hibernate编译运行所依赖的jar包,其中required子目录下包含了运行hibernate项目必须的...创建hibernate核心配置文件 它主要是hibernate框架所使用的,它主要包含了连接数据库相关信息,hibernate相关配置等。...问题:我们如何解决session的安全问题? 我们只需要在方法内部来使用Session就可以。 问题:Session如何获取到?

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

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

,OQL是可以进行其它平台移植的 .NET框架低版本支持:框架仅需.NET 2.0 支持,如果引入Linq方式,那么意味着框架需要.net 3.5及以上版本支持 简化条件调用:在Where方法中直接调用实体类的属性....End 属性调用,因为 OrderBy 方法返回的对象是OQL1,而不是OQL,所以需要调用End 属性,返回本次操作OQL的当前对象实例,下面的方法实现能够说明这个原理: public...,“一行代码”实现Web、WinForm窗体表单数据的填充、收集、清除,到数据库的CRUD》 1.2、OQL一级表达式     --返回OQL1对象的方法或者属性调用,该级别的方法由OQL根级表达式生成并使用...(QueryParameter[] queryParas) 1.2.3,OrderBy方法:     设置OQL的排序方式,分为2种方式: 1.2.3.1,直接指定排序属性方式: //...5.3,延迟Select指定实体属性 上面的例子我们发现在Select方法Map方法内多次指定了字段/属性信息,代码量比较重复,因此在后续版本中,支持将Select方法的实体属性选择推迟到Map方法内

4.9K60

优化OEA中的聚合SQL

核心数据结构 - 加载选项     上面已经说明了加载选项是整个聚合SQL加载的描述数据,描述如何生成SQL,描述如何加载对象。...(老实说,这个设计的扩展性并不好。) /// /// 聚合加载描述器。..._items.AddLast(item); } } 而它包含的每一个元素 LoadOptionItem 则表示一个加载项,它主要包含一个属性的元数据,用于表示要级联加载的子对象集合属性或者外键引用对象属性...{ get; set; } /// /// 指标这个属性是一般的实体 /// internal AggregateLoadType...框架中对象的聚合加载的实现手写时一样,也是基于原有的ReadFromTable方法的,也不复杂,贴下代码,不再一一描述: /// /// 聚合实体的加载器 /// </summary

1.6K70

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

前言 Rafy 领域实体框架作为一个使用领域驱动设计作为指导思想的开发框架,必然要处理领域实体到数据库表之间的映射,即包含了 ORM 的功能。...IQuery 作为描述查询的核心类型,被重命名为 IPropertyQuery,所有方法的参数也都直接面向 Rafy 实体的《托管属性》。但是在整体结构上,还是与原框架保持一致。...EntityQuery 层中的类型实现了 IQuery 中对应的接口,并使用领域实体的相关 API 来实现实体到表、实体属性到列的转换。...框架使用测试驱动的方法开发,在开发时是先编写相关的测试用例,再实现内部代码。...重构的同时,我们为能想到的场景都编写了测试用例: 目前,框架版本也升级到了 2.23.2155。 有兴趣的同学,了解、下载最新的框架,请参考:《Rafy 领域实体框架发布!》。

2K70

C# 数据操作系列 - 8. EF Core的增删改查

0.前言 到目前为止,我们看了一下如何声明EF Core的初步使用,也整体的看了下EF Core的映射关系配置以及导航属性的配置。 这一篇,我带大家分享一下,我在工作中需要的EF Core的用法。...不过如果有导航属性的话,在新增的时候,EF Core会自动检索导航属性的另一端是否需要新增到数据库中,如果需要新增的话,EF Core会自动标记为新增的。...而删除,如果在配置导航属性时,没有设置级联删除,删除当前元素,如果另一端的外键是可空类型的,并不会删除导航属性另一端的元素只会设置外键指向为NULL,如果另一端外键是不可空的,那么就会同时删除。...Restrict None None 而对于数据的修改,EF Core的做法是通过监控实体的ChangeTracker来实现对数据实体的状态更新。...待EF Core篇完成后,将带领一起去探索 NhibernateDapper,SqlSugar这三个ORM框架

3K20

Java 最常见的 208 道面试题:第十二模块答案

Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作 hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。...对象关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联继承关系,而在数据库中,关系数据无法直接表达多对多关联继承关系。...因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。 115. hibernate 中如何在控制台查看打印的 sql 语句?...因为Hibernate会使用代理模式在延迟关联的情况下提高性能,如果你把实体类定义成final类之后,因为 Java不允许对final类进行扩展,所以Hibernate就无法再使用代理了,如此一来就限制了使用可以提升性能的手段...不过,如果你的持久化类实现了一个接口而且在该接口中声明了所有定义于实体类中的所有public的方法轮到话,你就能够避免出现前面所说的不利后果。 118.

69430

Asp.Net Core 扩展 Linq,简化自定义

普通查询 对于 Linq 查询来说,Where OrderBy 使用时需要直接点出来属性或者字段才行,如下所示: // 数据结构 public class ArticleTag { public...if...else 来判断,那么将会是一个非常大的工程量,每个实体上面有 m 个属性,而一个项目中有 n 张表,那么几乎需要 m*n个判断进行处理,非常的差劲,不利于后续扩展维护。...但是天无绝人之路,在 c#中拥有扩展方法、表达式目录树反射,可以将上面的方式进行优化。...对于 Linq 扩展方法来说,需要使用到表达式目录树反射等高级操作,本人目前对于此处理解不是太深,就越过这里了,直接说如何实现即可 public static class LinqExtension...字符串传递进来就可以实现查询排序,方便使用,PropertyName可以随意更改,当PropertyName不属于查询的类型中时,只会抛出错误,需要进一步处理 var result = articleTags.Where

1.7K10

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

自2006年第一版以来,经历了多次重构,到PDF.NET Ver 4.X 版本,已经比较稳定了,在我做的项目框架用户朋友的项目中得到成功应用,基本符合一般的常规应用需求。...在 Transact-SQL 中,包含子查询的语句语义上等效的不包含子查询的语句在性能上通常没有差别。但是,在一些必须检查存在性的情况中,使用联接会产生更好的性能。...但项目中可能还是有需要写SQL插入数据的情况,比如插入Int类型的值为0,如果用实体类的方式那么该列不会被插入,因为PDF.NET的实体类认为该属性值没有改变,PDF.NET的插入更新操作,都只处理“...所以我们会看到针对集合操作的扩展方法,有很多都要使用 => 的调用方式,而OQL没有使用Lambda,它是怎么获取到查询对应的表名称字段名称的呢?它是怎么实现SQL查询的层次结构的呢?...这样,不论是OQL的Select方法,Where方法还是OrderBy方法,都能够使用统一的堆栈结构来获取方法使用的属性字段了。

2.4K70

ado.net data services开发框架学习

ado.net data services开发框架学习 什么是ado.net data services Ado.net 数据服务可以很方便的将企业内部数据发布一个数据服务器供web客户端调用,ado.net...数据服务使用标准的http请求获取操作(CRUD)数据服务,并且实现这些操作都非常简单。...The entity-set name (optional).查看数据服务下面的实体名称,比如 /Orders 返回所有Orders表中记录,如果该实体包含关键字,要通过关键字查询 '10248, 则URI...可以表示为/Orders(10248).还可以通过扩张的筛选表达式实现更复杂的查询 A navigation property (optional).导航属性可以通过URI实现将有关联关系的实体查询出来比如...title=AJAX) .net client类库 客户端库使用HTTPatompub格式,所以它工作在企业网络互联网的环境;通过http方式连接到数据服务 创建一个.net client应用需要引用

74560

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

Item实体对应Item表,每个Item拥有一些评论,也就是ItemComment。Item实体中有一个Comments属性,是ItemComment实体的集合。...不过使用这个方法来获得仅有部分字段的对象时需要注意一点:在构造匿名对象时使用的属性名,可能目标实体对象(例如之前的Item)的属性名并非一一对应的关系。   ...这种情况会在实体对象的属性名与数据表字段名不同的时候发生。在使用LINQ to SQL时默认生成的实体对象,其属性名与数据库的字段名完全对应,这自然是最理想的情况。...因此,如果您使用了ColumnAttribute中的Name属性改变了数据库字段名与实体对象属性名的映射关系,那么在创建匿名对象的时候还是要使用数据库的字段名,而不是实体对象名,如下: public static...那么我们又该如何解决这个问题呢?如果您希望同时使用本文类似的扩展Load With能力,可能就需要通过查询两次数据库并加以组合的方式来生成对象了——虽然查询了两次,但总比查询100次的性能要高。

4.8K50

一行代码调用实现带字段选取+条件判断+排序+分页功能的增强ORM框架

但是,PDF.NET比起EF来,仍然有很大的劣势,主要就是用起来没有EF简单,这个问题饱受广大朋友的批评,但我很感谢这些朋友,他们的批评才是框架进步的动力,为此,之前我发表了《来一点反射Emit,让ORM...如果不是这种接口类型的动态实体类,可以通过下面的扩展方法来简化查询: public static List ToList(this OQL q) where T:EntityBase,new...OrderBy字句,所以需要定义下面的子类: public class GOQL1 : GOQL2 where T : class { public GOQL2 Where(...最后,我们就可以写一个真正的测试代码了:   95行源码,一行代码调用实现带字段选取+条件判断+排序+分页功能的增强ORM框架 static void TestGOQL() {...收工,PDF.NET 顺利实现一行代码查询数据的功能,除了Where 条件的复杂写法不那么优美,总体上GOQL,OQL可以媲美EF了!

1.3K90

数据库:Criteria与原生SQL查询

HQLSQL很相似,其特点是灵活功能丰富,但缺点是使用者必须熟悉SQL的语法,而且在组合条件查询时,常常需要拼装Where条件,还得为条件提供参数。...直接使用criteria的add()方法,仅能添加简单类型属性限制对于关联类的Id属性限制。...若要添加关联类的其它属性限制(如为Movie实体添加关联类Category的name属性限制,必须重新createCriteria()并把关联属性名作为参数传入,然后就可以使用关联类Category的属性作为限制条件...我们常常希望通过本地SQL查询返回持久化实体对象,若用上述的方式,Hibernate的返回结果是基本类型的Object数组,要获取实体,还需要重新构建实体对象设置属性。...为了简化我们的工作,SQLQuery接口对象直接提供了addEntity(String alias, Class entityClass)方法,可以帮助我们直接把SQL结果填充到实体对象,返回实体对象数组列表

34550

EF Core关系配置

导航属性 由一个属性可以访问到另外一种类型的实体叫做导航属性 单向导航:不设置反向的属性,然后配置的时候WithMany()不设置参数即可。...(l => l.Requester == u)) { Console.WriteLine(l.Remarks); } 如果表属于被很多表引用的基础表,则用单向导航属性,否则可以自由决定是否用双向导航属性...SQL EFCore如何跟踪实体数据变化 快照更改跟踪:首次跟踪一个实体的时候,EF Core 会创建这个实体的快照。...未改变(Unchanged):DbContext正在跟踪此实体,该实体存在于数据库中,其属性从数据库中读取到的值一致,未发生改变。...EntityEntry类的State属性代表实体的状态,通过DebugView.LongView属性可以看到实体的变化信息。

6910

不使用反射的实体类方案

看过很多ORM的实体类方案,大多是用反射来读数据库数据,这样当频繁操作实体类的时候效率很低,我借鉴了一位朋友的思路,采用.NET 2.0的泛型技术,为实体类提供一个通用的查询持久化方案。...            //IdentityName = "标识列";//如果指定了标识列,可以处理自增列插入问题             //PrimaryKeys.Add("主键列");//指定主键列方可以删除更新实体数据...字段的选取都是通过实体类对象.属性 的方式,完全面向对象,用起来有点像LINQ,呵呵。 为啥说读取数据不需要反射?...因为PDF.NET的实体类有内置的“属性名-属性值”字典,我们来看看具体是如何实现的: ///          /// 根据数据阅读器对象,查询实体对象集合(注意查询完毕将自动释放该阅读器对象...整个实体类方案原理很简单,但实体类代码比较多,手写代码还是比较累人,所以框架提供一个代码生成器,从数据库表生成实体类或者将自己编写的SQL语句映射成实体类。

76580

【深入浅出C#】章节 9: C#高级主题:LINQ查询表达式

Console.WriteLine(num); } 方法语法: 方法语法使用扩展方法来实现查询。...四、LINQ查询操作和结果 4.1 如何构建和组合多个LINQ查询操作符 构建和组合多个LINQ查询操作符是通过链式调用操作符的方式来实现的。...以下是如何构建和组合多个LINQ查询操作符的示例: 假设我们有一个包含一些人员信息的集合,每个人员都有姓名、年龄职业属性。...使用匿名类型可以方便地选择要返回的属性,并且无需显式定义一个类。以下是如何使用匿名类型处理查询结果的示例: 假设我们有一个包含人员信息的集合,每个人员都有姓名、年龄职业属性。...以下是创建和使用 LINQ 扩展方法的基本步骤: 创建 LINQ 扩展方法: 创建一个静态类: 创建一个静态类,用于包含你的 LINQ 扩展方法。

1K61

ORM查询语言(OQL)简介--高级篇(续):庐山真貌

尽管从使用上已经比iBatis.Net简单很多了,但是对于大多数简单的CRUD,还是需要写SQL映射,实在不爽,于是给框架加入了点ORM功能,但觉得当时的ORM动不动就将实体类的全部属性字段的数据返回来...因此,EF实现这个效果,靠的还是委托这个功能。     上面是单个实体类的实体属性字段选取,如果是多个呢?    ...我们知道,Linq可以处理多个实体类的连接(左、右、内)查询,但百度了半天,实在不知道怎么用Lambda来实现多个实体类的属性选取,有知道的还请大侠告之,谢谢。    ...    有时候可能会根据情况来决定要Select哪些字段,只需要在OQL实例上多次调用Select方法并传入实体属性参数即可,在最终得到SQL语句的时候才会进行合并处理,实现了延迟选取属性字段的功能...C.iCityID 的当前值,比如0,这种情况框架无法判断方法使用的实体属性是在本方法的参数上,还是方法调用前曾经使用过但还没有清理过的实体属性调用。

1.9K90
领券