首页
学习
活动
专区
圈层
工具
发布

C# 数据操作系列 - 19 FreeSql 入坑介绍

这种写法是C#的一种语法糖,只有get表示该属性是一个只能读的属性(与只读属性有个微妙的差距),等号后面表示该属性第一次赋值的内容。...IgnoreColumns(string[] columns); IInsert IgnoreColumns(Expression> columns); 设置在插入过程中忽略的列...简单理解一下,在这里FreeSql只是解析了数据里的实体,但并没有从传入的实体解析出更新SQL语句。...总结 FreeSql可以说结合了很多优秀的ORM框架内容,而且针对不同的方式分成了不同的插件形式,使主干可以轻装上阵。 ? 这是官方文档中关于不同使用习惯的介绍。...至此,2020-5-28 《C# 数据操作系列》暂时 完结(如果后续有其他好的ORM的话,还会继续更新的)。

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

    EF Core关系配置

    执行实体相关查询原生SQL语句 如果要执行的原生SQL是一个查询语句,并且查询的结果也能对应一个实体,就可以调用对应实体的DbSet的FromSqlInterpolated()方法来执行一个查询SQL...未改变(Unchanged):DbContext正在跟踪此实体,该实体存在于数据库中,其属性值和从数据库中读取到的值一致,未发生改变。...SaveChanges()的操作: “已分离”和“未改变”的实体,SaveChanges()忽略; “已添加”的实体,SaveChanges() 插入数据库; “已修改”的实体,SaveChanges(...DbContext会根据跟踪的实体的状态,在SaveChanges()的时候,根据实体状态的不同,生成Update、Delete、Insert等SQL语句,来把内存中实体的变化更新到数据库中。...; Tips:一般只有在编写不特定于某个实体类的通用框架的时候,由于无法在编译器确定要操作的类名、属性等,所以才需要编写动态构建表达式树的代码。

    1.4K10

    【asp.net core 系列】8 实战之 利用 EF Core 完成数据操作层的实现

    EF Core 批量加载模型 通常情况下,在使用ORM的时候,我们不希望过度的使用特性来标注实体类。因为如果后期需要变更ORM或者出现其他变动的时候,使用特性来标注实体类的话,会导致迁移变得复杂。...而且大部分ORM框架的特性都依赖于框架本身,并非是统一的特性结构,这样就会造成一个后果:本来应该是对调用方隐藏的实现就会被公开,而且在项目引用关系中容易出现循环引用。...所以,我在开发中会寻找是否支持配置类,如果使用配置类或者在ORM框架中设置映射关系,那么就可以保证数据层的纯净,也能实现对调用方隐藏实现。...EF Core的配置类我们在《C# 数据访问系列》中关于EF的文章中介绍过,这里就不做过多介绍了(没来得及看的小伙伴们不着急,后续会有一个简单版的介绍)。...这里的处理利用了C# Expression的一个技术,这里就不做过多介绍了。后续在.net core高级篇中会有介绍。 4.

    2.2K40

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

    一、OQL之前生 1.1,内容回顾:     OQL是我设计用来处理PDF.NET开发框架的ORM查询的,因此叫做ORM查询语言。...OQL的原理基于2大特性: 表达式的链式调用   属性的实例调用 OQL支持4大类数据操作 数据查询: 单实体类(单表)查询 多实体类(多表)关联查询 数据修改 更新数据 删除数据 统计、聚合运算...其他问题只能通过子查询提出。在 Transact-SQL 中,包含子查询的语句和语义上等效的不包含子查询的语句在性能上通常没有差别。但是,在一些必须检查存在性的情况中,使用联接会产生更好的性能。...因此可能出现OQLCompare使用的实体类在OQL中没有使用,从而产生错误的查询; OQLCompare中的的字段名与OQL缺乏相关性,因此只能通过“表名称.字段名称”这种形式来使用属性字段名,无法使用别名...FROM [Table] WHERE Condition ----------------- SELECT Field1,Field2...

    3.2K70

    C# .NET面试系列三:集合、异常、泛型、LINQ、委托、EF!

    通过使用 ORM,开发人员可以使用面向对象的代码来表示数据库中的表和记录,而无需手动编写和执行 SQL 查询。ORM 框架负责将对象模型与数据库结构进行映射,以及在应用程序中执行数据库操作。...一些常见的 C# ORM 框架包括:Entity Framework (EF): 是由 Microsoft 开发的官方 ORM 框架,支持多种数据库系统,并提供强大的 LINQ 查询功能。...NHibernate: 是一个开源的 ORM 框架,基于 Java 的 Hibernate 框架,提供了对关系数据库的映射和查询功能。...当需要访问集合中的元素时,才会实际加载这些元素。在C#中,LINQ(Language Integrated Query)的查询操作通常是延迟执行的。...EF中的实体状态包括以下几种:1、Unchanged(未更改)当一个实体对象从数据库中查询出来或者通过上下文追踪到时,它的状态被标记为未更改。这表示实体的属性值与数据库中的值相匹配,没有任何更改。

    66910

    EntityFramework 外键值映射

    如果在 EF OnModelCreating 中配置了实体外键映射,也就是 SQL Server 中的 ForeignKey,那么我们在添加实体的时候,主实体的主键值会自动映射到子实体的外键值,并且这个操作在一个...1、实体框架主键的类型约束问题 在我们搭建整个实体框架的过程中,我们一般都是抽象封装处理很多基础的增删改查、分页等常见的数据处理功能,如下所示。...在c#中,如果实体类的属性没有赋值,一般都会取默认值,比如int类型的默认值为0,string类型默认值为null, 那DateTime的默认值呢?...C#代码中 将原本是DateTime类型的字段修改为DateTime?类型,由于可空类型的默认值都是为null,所以传入数据库就可以不用赋值,数据库中的datetime类型也是支持null值的。...在实体框架界面层的查询中,我们也不在使用部分SQL的条件做法了,采用更加安全的基于DTO的LINQ表达式进行封装,最后传递给后台的也就是一个LINQ对象(非传统方式的实体LINQ,那样在分布式处理中会出错

    5.1K50

    左求值表达式,堆栈,调试陷阱与ORM查询语言的设计

    这个问题虽然对于大多数情况来说不重要,甚至很多普通C#,Java开发者都会忽略的问题,但是对于语言设计者,框架设计者,这是有可能需要考虑的问题。...",18)) .END; List users=EntityQuery.QueryList(q); 这个OQL查询是在查询所有年龄大于18岁的用户,在Where方法中,cmp对象就是一个...对象的某个方法内则不符合本条件) 且方法的第一个参数和第三个参数的值一样的时候, 第三个参数不是一个实体类属性调用,而是一个单纯变量或者值 3.3,消除复杂查询条件的“字段堆栈“干扰 要解决这个问题也很容易...SOD框架的”ORM查询语言“--OQL,并详细的分析了可能产生的问题与解决方案。...如果使用PDF.NET SOD框架来处理动态的查询条件,那么本篇文章一定要仔细阅读一下。

    1.1K60

    PDF.NET数据开发框架实体类操作实例

    本篇是 PDF.NET数据开发框架实体类操作实例(MySQL) 的姊妹篇,两者使用了同一个测试程序,不同的只是使用的类库和数据库不同,下面说说具体的使用过程。...3,根据这个实体类,我们去MySQL定义一个用户表:tb_user,具体过程省略,注意字段“ID”仍然使用自增列(在PostgreSQL中是 serial 类型,但编辑表类型的时候,发现字段是整数类型,...)).END ;             OQL q = new OQL(u);             //使用OQL2 作为条件对象             q.Select().Where(q.Condition.AND...:  //PostgreSQL 没有 @@IDENTITY 变量,所以无法拿到刚才的自增值,注释掉下面的修改方法 虽然注释了修改实体的方法,但只要手工给ID属性设置值,仍然可以修改实体。...Order by [Age] asc 查询实体集合成功,数量:3 Executed SQL Text: SELECT "ID","Name","Age"  FROM "tb_user"    Where

    1.2K60

    C# 数据操作系列 - 15 SqlSugar 增删改查详解

    也就是说我们可以使用它对单个实体类进行操作,这在开发中很重要。 2. 插入数据 对于一个程序而言,数据就像是血液一样重要。对于ORM框架,插入是一切来源的基础。...bool ExecuteCommandIdentityIntoEntity(); 执行动作,然后将主键插入实体对象,返回插入结果。执行完成后,主键数据保存到实体示例中。...有一点值得特别注意: 所有会返回主键的插入都只针对单个数据,如果一次插入多个数据,并不会返回主键信息也无法将主键信息更新入实体中。...查询 一个好的ORM框架,至少五分功力在查询上,如何更快更准的查询成为了现在开发对ORM框架的要求。同时简单易用更是程序员对ORM的期望。...再有三篇的内容《C# 数据操作系列》就要完结了。从下一系列开始,就要步入工作中最重要的技术栈了:Asp.net Core。这是可以写入简历的。嗯,没错。

    3.8K20

    使用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.5K60

    Entity Framework Plus: 让 EF Core 开发如虎添翼

    查询缓存:提供查询缓存功能,允许将查询结果缓存在内存中,以减少对数据库的重复查询,提高应用程序的响应速度。...查询包含优化:改进了 Include 方法的行为,允许在加载关联实体时应用过滤条件,从而优化生成的 SQL 语句。...审计跟踪:提供审计跟踪功能,允许自动跟踪对实体的更改,并将审计信息保存到数据库中。...该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。...坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没)。

    1.4K10

    MyBatis从入门到精通(二)—mybatis的Dao实现和配置文件深入

    参考的官方文档,描述如下: 动态 SQL 之 我们根据实体类的不同取值,使用不同的 SQL语句来进行查询。...比如在 id如果不为空时可以根据id查询,如果username 不同空时还要加入用户名作为条件。这种情况在我们的多条件组合查询中经常会碰到。...=''"> and username=#{username} where> 当查询条件id和username都存在时,...user = userMapper.findByCondition(condition); 当查询条件只有id存在时,控制台打印的sql语句如下: //获得MyBatis框架生成的UserMapper...,生成的变量名 sperator:代表分隔符 SQL片段抽取 Sql 中可将重复的 sql 提取出来,使用时用 include 引用即可,最终达到 sql 重用的目的 <!

    91010

    tkmybatis详细教程(一篇就明白)

    因此才有了 “配置” 中第2步继承Mapper接口。 它定义各种 sql 语句的基础,通过灵活的拼接,查询参数的设置,可以满足开发者各种的数据库查询要求。...int deleteByPrimaryKey(Object var1); DeleteMapper接口有一个方法 delete,参数就是数据库表对应的Java实体类,参数实体中哪些字段不为null,就会被作为删除...int delete(T var1); 注意:在定义实体类时,每个成员变量的类型都应该是Java类,不能是基本类型,比如整型,应该用 Integer,而不是 int。...int insertSelective(T var1); 3.3 查询 SelectMapper 接口有一个方法 select,参数实体类中哪些字段不为 null,就会被作为 select sql 语句中的条件字段...(Object param) 实体对象中不为 null 的字段作为 where 后面的判断条件 andEqualTo(String property, Object value) 某一个作为

    8.5K31

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

    ,主要特点是具有iBatis特点的SQL-MAP功能和框架独特的实体对象查询语言--OQL,下面我们使用OQL来构造一个复杂的实体查询。...首先定义两个实体类:用户类和订单类,可以使用框架提供的实体类生成器生成,下面是详细代码: /*   本类由PWMIS 实体类生成工具(Ver 4.1)自动生成  http://www.pwmis.com...Or UID = @CP3 )  AND  ( Name = @CP4 Or Name = @CP5 ) ) 第二段代码是为了以UID为外键,从订单表中查询哪些用户在10日内提交了订单的用户信息,程序声明了两个...oql.Select().Where(oql.Condition.AND(user.Sex ,"=",true).IN(user.UID, q_order)); 该条查询输出的完整SQL语句如下: SELECT...   Where OrderDate >= @CP1     ) OK,到此为止,我们可以使用我们的OQL查询出真正的实体集合了: List result=EntityQuery

    2.1K50

    肝九千字长文 | MyBatis-Plus 码之重器 lambda 表达式使用指南,开发效率瞬间提升80%

    MyBatis 是一种操作数据库的 ORM 框架,提供一种 Mapper 类,支持让你用 java 代码进行增删改查的数据库操作,省去了每次都要手写 sql 语句的麻烦。...题外话:Mybatis 和 Hibernate 的比较 Mybatis 是一个半 ORM 框架;Hibernate 是一个全 ORM 框架。Mybatis 需要自己编写 sql 。...::getId,Entity 为实体类,getId为字段id的getMethod) 方法入参中的 R column 均表示数据库字段,当 R 具体类型为 String 时则为数据库字段名(字段名是数据库关键字的自己用转义符包裹...ISqlSegment 就是对 where 中的每个条件片段进行组装。...boolean condition 表示该条件是否加入最后生成的 sql 中。

    3.2K10

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

    本篇是 PDF.NET数据开发框架实体类操作实例(MySQL) 的姊妹篇,两者使用了同一个测试程序,不同的只是使用的类库和数据库不同,下面说说具体的使用过程。...注:在PDF.NET SOD框架 5.6.0.1121 之后,框架取消了这一个限制,你仍然可以像在其它数据库中那样使用PostgreSQL的自增列,实体类无需做任何更改。...)).END ;             OQL q = new OQL(u);             //使用OQL2 作为条件对象             q.Select().Where(q.Condition.AND...: //PostgreSQL 没有 @@IDENTITY 变量,所以无法拿到刚才的自增值 //但可以使用 select currval('User_ID_seq'); //所以必须设置当前实体对应的表的自增字段序列名称...]    Where [Name]=@Name --查询单个实体成功!

    2K60
    领券