摘要:
比如项目内已经使用了其它 orm,如 efcore,这样意味着实体中可能存在 [Key],但它与 FreeSql [Column(IsPrimary = true] 不同。 Q: FreeSql 实体特性为啥这么别扭? A: 为了考虑一致性用法,全部封装在 ColumnAttribute 下,这样用 阅读全文
摘要:
FreeSql 支持 CodeFirst 迁移结构至数据库,这应该是(O/RM)必须标配的一个功能。 与其他(O/RM)不同FreeSql支持更多的数据库特性,而不只是支持基础的数据类型,这既是优点也是缺点,优点是充分利用数据库特性辅助开发,缺点是切换数据库变得困难。不同程序员的理念可能不太一致,F 阅读全文
摘要:
前面有介绍过几篇 CodeFirst 内容文章,有 《(二)自动迁移实体》(https://www.cnblogs.com/FreeSql/p/11531301.html) 《(三)实体特性》(https://www.cnblogs.com/FreeSql/p/11531302.html) 《(四) 阅读全文
摘要:
FreeSql AOP 已有的功能介绍,未来为会根据用户需求不断增强。 审计 CRUD 马云说过,996是修福报。对于多数程序员来说,加班是好事。。。起码不是闲人,不会下岗。 当如果因为某个 sql 骚操作耗时很高,没有一个相关的审计功能,排查起来可以说无从下手,福报与你紧紧相随(哈哈)。 Free 阅读全文
摘要:
理论知识 分表 - 从表面意思上看呢,就是把一张表分成N多个小表,每一个小表都是完正的一张表。分表后数据都是存放在分表里,总表只是一个外壳,存取数据发生在一个一个的分表里面。分表后单表的并发能力提高了,磁盘I/O性能也提高了。并发能力为什么提高了呢,因为查寻一次所花的时间变短了,如果出现高并发的话, 阅读全文
摘要:
FreeSql 支持数据库读写分离,本功能是客户端的读写分离行为,数据库服务器该怎么配置仍然那样配置,不受本功能影响,为了方便描术后面讲到的【读写分离】都是指客户端的功能支持。 各种数据库的读写方案不一,数据库端开启读写分离功能后,读写分离的实现大致分为以下几种: 1、nginx代理,配置繁琐且容易 阅读全文
摘要:
In查询 var t1 = fsql.Select<T>() .Where(a => new[] { 1, 2, 3 }.Contains(a.Id)) .ToList(); //SELECT .. FROM .. //WHERE (a.`Id` in (1,2,3)) 已优化,防止 where i 阅读全文
摘要:
1、外部事务 在外部开启事务的场景,可使用 WithTransaction 传入事务对象。 await fsql.Update<xxx>() .WithTransaction(指定事务) .Set(a => a.Clicks + 1) .ExecuteAffrowsAsync(); ISelect、 阅读全文
摘要:
有时候,我们希望将写好的 sql 语句,甚至是存储过程进行查询,虽然效率不高(有时候并不是效率至上)。 巧用AsTable var sql = fsql.Select<User>() .AsTable((a, b) => "(select * from user where clicks > 10) 阅读全文
摘要:
1、导航属性 ManyToOne ManyToOne 导航属性通过 ToList(includeNestedMembers: false) 加载,参数说明: false: 返回 2级 Join 的导航数据(默认); true: 返回所有层级深度 Join 的导航数据(未使用的导航数据不会返回); S 阅读全文
摘要:
FreeSql 支持导航属性延时加载,即当我们需要用到的时候才进行加载(读取),支持1对1、多对1、1对多、多对多关系的导航属性。 当我们希望浏览某条订单信息的时候,才显示其对应的订单详细记录时,我们希望使用延迟加载来实现,这样不仅加快的了 读取的效率,同时也避免加载不需要的数据。延迟加载通常用于f 阅读全文
摘要:
原本不支持 IQueryable 主要出于使用习惯的考虑,编写代码的智能总会提示出现一堆你不想使用的方法(对不起,我有强迫症),IQueryable 自身提供了一堆没法实现的方法,还有外部入侵的扩展方法,严重影响编码体验。如下图: v1.4.0+ 版本请使用以下命令安装(老版本不需要安装): dot 阅读全文
摘要:
static IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Passwor 阅读全文
摘要:
适合喜欢使用 dto 的朋友,很多时候 entity 与 dto 属性名相同,属性数据又不完全一致。 有的人先查回所有字段数据,再使用 AutoMapper 映射。 我们的功能是先映射,再只查询映射好的字段,节省了io性能。 Select<Tag>().Limit(10).ToList(a => n 阅读全文
摘要:
FreeSql 采用 ExpressionTree 优化读取速读,如果懂技术的你一定知道 .NETCore 技术下除了原生代码,最快就是 Emit 和 ExpressionTree。项目在初期使用的反射+缓存,虽然 .NETCore 优化了反射性能,但经过与Dapper性能测试对比之后,发现仍然有一 阅读全文
摘要:
WhereCascade 多表查询时非常方便,有了它可以很轻松的完成类型软删除,租户条件的功能。 static IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.MySql, "Dat 阅读全文
摘要:
多表查询,常用的有联表 LeftJoin/InnerJoin/RightJoin ,这三个方法在上篇文章已经介绍过。 除了联表,还有子查询 Where Exists,和 Select 子表: static IFreeSql fsql = new FreeSql.FreeSqlBuilder() .U 阅读全文
摘要:
导航属性是 FreeSql 的特色功能之一,可通过约定配置、或自定义配置对象间的关系。 导航属性有 OneToMany, ManyToOne, ManyToMany, OneToOne, Parent 五种配置关系。 有了导航属性,多表查询会非常方便,lambda 表达式中直接使用导航对象点点点,舒 阅读全文
摘要:
FreeSql在查询数据下足了功能,链式查询语法、多表查询、表达式函数支持得非常到位。 static IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.MySql, "Data Sou 阅读全文
摘要:
static IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Passwor 阅读全文