摘要:
一、实体查询 二、按需查询 Select<T>() 阅读全文
摘要:
说明 一个Orm自然不仅仅包含条件表达式,还会有如下的场景: 而应用场景的不同,导致解析的方式也有所不同,在这里我们又定义了两个解析类:[ObjectMemberVisitor] 和 [SelectExpressionResolver]。 [ObjectMemberVisitor] 主要用于从表达式 阅读全文
摘要:
说明 在SQL中,查询、修改比较常用到WHERE子句,在这里根据使用场景不同,定义了两个类,一个用于查询,一个用于修改(插入)操作。原因是: 查询操作支持一级导航属性查询,如student.School.Name="xxx",在这里使用LEFT JOIN 的方式实现,所以拼接的时候需要考虑子表别名( 阅读全文
摘要:
到这里,Orm的基架已经搭起来了,接下来就是激动人心的部分,表达式目录树转Sql语句,SqlDataReader转数据实体等等,但是在这之前,我们需要扩展下表达式目录树的方法,以方便后面的相关操作。 表达式目录树解析时需要的扩展方法 表达式操作符转SQL操作符,这个没什么好说的,根据表达式类型获取相 阅读全文
摘要:
既然是数据库工具,自然少不了增删改查的sql语句,在这里将这些常用SQL拼接操作集成到 [SqlServerBuilder.cs] 当中,方便后面调用。 近几年在项目中一直使用Dapper操作数据库,感觉其实现的DynamicParameters特别炫,所以尝试封装了一个类似的方法 [MyDbPar 阅读全文
摘要:
一、实体属性描述 [MyProperty.cs] Name,属性名称 PropertyInfo,反射获取的属性信息,后面很多地方需要通过该属性获取对应的实体类型,或调用SetValue进行赋值 FieldName,对应的数据表列名 IsKey,是否主键 IsMap,查询时是否映射该属性,若属性非值类 阅读全文
摘要:
一、约定 数据实体必须实现 IEntity 接口,该接口定义了一个int类型的Id属性,既每个实体必须有一个名称为Id的自增主键。 若数据表的主键列名称不是Id,可以通过 [MyKey("主键列名")] 对该属性进行描述 二、实体描述 MyTableAttribute,用于约定实体和数据表的关联关系 阅读全文