摘要: 一、实体查询 二、按需查询 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) 编辑
摘要: 找到要抓取的图片地址:http://i.imgur.com/8S7OaEB.jpg 抓取的步骤: 明晰了步骤,接下来就简单了,直接上代码 注意,这里的代码仅供测试,使用时请自行完善。 阅读全文
posted @ 2019-01-30 00:07 没追求的码农 阅读(1319) 评论(2) 推荐(0) 编辑
摘要: 打开program.cs文件,修改CreateWebHostBuilder方法: 其实就是添加了红框内的代码: 代码很简单,这是这些文档稍微难找了一些,记录一下,希望能为有此需求的人少浪费点时间。 这个功能的运用场景很多,可以为不同的应用添加对应的配置文件,如 ueditor 这些应用本身配置项很多 阅读全文
posted @ 2019-01-28 01:32 没追求的码农 阅读(3658) 评论(2) 推荐(0) 编辑
摘要: SqlDataReader映射实体,是ORM的基础功能,常见的实现方式有反射、表达式目录树和emit,这里要说的就是用表达式目录树生成实体的方法。 先分析下思路: 假设有个数据实体类,Student 获取到SqlDataReader,手撸代码的话,我们可能是这样做的 无疑,这种效率是最高的,原因是: 阅读全文
posted @ 2018-12-30 17:12 没追求的码农 阅读(722) 评论(0) 推荐(0) 编辑