摘要: 说明 使用Expression(表达式目录树)转Entity的文章在园子里有很多,思路也大致也一样,我在前面有篇文章对解决思路有些说明,有兴趣的小伙伴可以看下 (传送门),刚接触表达式目录树时写的,不太严谨,但思路上应该不会有误导群众的嫌疑,具体实现代码还是以本篇的为准。 关于缓存和缺陷 实体查询, 阅读全文
posted @ 2019-04-06 23:48 没追求的码农 阅读(716) 评论(1) 推荐(0) 编辑
摘要: 说明 其实就是数据库操作的一些封装,很久不用SqlCommand操作数据库了,看了点园子里的文章就直接上手写了,功能上没问题,但写法上是否完美高效无法保证,建议有需要的朋友自己重写,当然如果能把最佳实践方式告知一下,不胜感激!! 因为文件比较大,所以将此类分成了四部分。 MyDb主体 MyDbUpd 阅读全文
posted @ 2019-04-06 23:42 没追求的码农 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 这个实现比较简单,事实上可配置的项目很多,如有需要,请读者自行扩展 阅读全文
posted @ 2019-04-06 23:39 没追求的码农 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 一、实体查询 二、按需查询 Select<T>() 阅读全文
posted @ 2019-04-06 23:36 没追求的码农 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 说明 一个Orm自然不仅仅包含条件表达式,还会有如下的场景: 而应用场景的不同,导致解析的方式也有所不同,在这里我们又定义了两个解析类:[ObjectMemberVisitor] 和 [SelectExpressionResolver]。 [ObjectMemberVisitor] 主要用于从表达式 阅读全文
posted @ 2019-04-06 23:32 没追求的码农 阅读(495) 评论(0) 推荐(0) 编辑
摘要: 说明 在SQL中,查询、修改比较常用到WHERE子句,在这里根据使用场景不同,定义了两个类,一个用于查询,一个用于修改(插入)操作。原因是: 查询操作支持一级导航属性查询,如student.School.Name="xxx",在这里使用LEFT JOIN 的方式实现,所以拼接的时候需要考虑子表别名( 阅读全文
posted @ 2019-04-06 23:25 没追求的码农 阅读(1343) 评论(2) 推荐(1) 编辑
摘要: 到这里,Orm的基架已经搭起来了,接下来就是激动人心的部分,表达式目录树转Sql语句,SqlDataReader转数据实体等等,但是在这之前,我们需要扩展下表达式目录树的方法,以方便后面的相关操作。 表达式目录树解析时需要的扩展方法 表达式操作符转SQL操作符,这个没什么好说的,根据表达式类型获取相 阅读全文
posted @ 2019-04-06 23:14 没追求的码农 阅读(571) 评论(0) 推荐(0) 编辑
摘要: 既然是数据库工具,自然少不了增删改查的sql语句,在这里将这些常用SQL拼接操作集成到 [SqlServerBuilder.cs] 当中,方便后面调用。 近几年在项目中一直使用Dapper操作数据库,感觉其实现的DynamicParameters特别炫,所以尝试封装了一个类似的方法 [MyDbPar 阅读全文
posted @ 2019-04-06 23:07 没追求的码农 阅读(973) 评论(0) 推荐(0) 编辑
摘要: 一、实体属性描述 [MyProperty.cs] Name,属性名称 PropertyInfo,反射获取的属性信息,后面很多地方需要通过该属性获取对应的实体类型,或调用SetValue进行赋值 FieldName,对应的数据表列名 IsKey,是否主键 IsMap,查询时是否映射该属性,若属性非值类 阅读全文
posted @ 2019-04-06 23:05 没追求的码农 阅读(651) 评论(0) 推荐(0) 编辑
摘要: 一、约定 数据实体必须实现 IEntity 接口,该接口定义了一个int类型的Id属性,既每个实体必须有一个名称为Id的自增主键。 若数据表的主键列名称不是Id,可以通过 [MyKey("主键列名")] 对该属性进行描述 二、实体描述 MyTableAttribute,用于约定实体和数据表的关联关系 阅读全文
posted @ 2019-04-06 22:49 没追求的码农 阅读(485) 评论(0) 推荐(1) 编辑