开发初衷 注册了博客园已经有几个月了,却从来都没有上来过,本人大概从2010年开始就开始做.NET 方向的开发。 这个是我在博客园发布的第一个帖子。 主要就是说说最近在写的一个ORM架构。 本人接触的ORM架构也有不少,没有一个是用着顺手的,要么就是配置起来特别吃力,要么 ...
开发初衷
注册了博客园已经有几个月了,却从来都没有上来过,本人大概从2010年开始就开始做.NET 方向的开发。
这个是我在博客园发布的第一个帖子。 主要就是说说最近在写的一个ORM架构。
本人接触的ORM架构也有不少,没有一个是用着顺手的,要么就是配置起来特别吃力,要么就是使用起来不是很方便。 最终还是比较喜欢NHibernate这套架构,因为这套架构支持在Model表的实体类内部包含其他的表的实体类 也就是在使用的时候,连联表查询都可以省了 可以直接支持对象.对象的方式来进行查询数据,屡试不爽,有了它基本已经放弃了使用视图 或 联表查询等等。
但是用它也有不爽的地方,就是配置起来太麻烦,需要些HQL。
出于以上种种,想自己动手开发一套,高性能高效率的ORM架构。
废话不多说,下面开始说我的构思。、
初步设计
开发一套架构的开始,总是要有一套架构的构思的。
对于这套架构,在实体类中舍去了
1. 用户发起了一个添加对象的操作
2. 通过添加的该对象T,去缓存中获取T对象相关的全部自定义特性,如果缓存中不存在则获取该T对象的自定义特性存入缓存中
3. 找到T对象,在去缓存中获取T-sql语句 由于数据库不同,所以生成的Sql语句也不相同,如果不存在则新生成,然后放入缓存中。
4. 获取到了T-SQL语句后,使用T对象生成 DbParameter[] 使用Emit,动态的创建IL 创建获取T对象属性的方法,来进行将T 填充到DbParameter[]
5. 通过T对应的配置文件的数据库连接,实例化不同的数据库
6. 实例化数据库成功后 来进行执行插入
7. 如果插入的对象 T 是要缓存的话, 将会同时存入内存数据库
8. 上述描述的是 添加对象 并不包含获取对象 如果是获取对象的话,需要用到AOP 来实现 对象.对象
太专业的话也不会说,大概的流程是这样的一个流程,实现思路也大概有了一些,先从最底层开始写起,那就是配置文件中的数据库连接字符串
下面是Config 配置文件中的数据库连接字符串
<?"1.0" encoding="utf-8" ?><configuration> <connectionStrings> <add name="Lazy1" connectionString="server=.=sa;pwd=Dieyu;database=Lazy.Framework;" providerName="System.Data.SqlClient"/> <add name="Lazy2" connectionString="server=.=sa;pwd=Dieyu;database=Lazy;" providerName="System.Data.SqlClient"/> </connectionStrings></configuration>
原标题:1. 连接字符串的创建
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。