Galbanum 之Orm(四)

首先呢,来看一下Orm项目通过VS导出的类图,

图片比较大,可以下载本地看,下面主要通过文字说说设计思想,
1。基于Attribute来映射表结构,主是有TableAttribute和ColumnAttribute,在TableAttribute拥有一个ColumAttribute的List集合,第一次TableFactory通过反射实体的类特性获取TableAttribute并同时通过反射实体的属性特性来添加到访TableAttribute的List<ColumnAttribute>中,之后表结构将用单件模式下的Dictionary静态存于内存中,即,内存中存有表结构,在以后的获取中将提高性能减少反射。两个类的关系用UML表示为组合关系。如图:



2。实体保存是主要是通过上面所说的特性来获取表结构,并利用特性来创建一个IStatement(该接口主要封装.net中的DbCommand),在创建中利用策略模式通过接口ICreateStmt来设置CommandText和Parameters,然而为了减少反射获取实体的属性名称和值,于是ICreateStmt接口中的CreateStmt()中,大凡封装了一个SetSqlParameters()(oracle数据库为SetOracleParameters)方法,这个由实体类自己提供的,于是IEntity接口就产生了。

3。Orm并没有封装实体的one to many 或者 many to one 的关系,主要是因为小巫感觉在涉及多表查询的时候还是直接使用SQL语句在性能上远超过延迟加载的实体集合,所以没有进行这一步的封装。

更加详细的说明可以看源程序注释和代码。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值