【IT168 技术文章】
前言:
持久数据层框架是我在研究NHibernate后,受它的启发做的一次创新。当前版本支持多数据库,O/R Mapping等,同时与NHibernate相比,它是一个轻量级框架,在学习和应用上显得更加简单。以下是我的初稿,第一次将我的研究成果展现出来,有不对的地方或更好的建议,欢迎点评。
1. 以下是数据层调用接口:
int CreateDbTable(object objTable);
bool IsExistTable(string tableName);
int ExcuteSql(string sql);
int Insert(string tableName, Hashtable values);
int Update(string tableName, Hashtable values, string wher);
DataTable Query4DataTable(object obj);
string Query4Value(string sql);
string Query4Value(string sql, int columnIndex);
int GetCount(string sql);
void BeginTransaction();
void Commit();
void Rollback();
List<ValueText> Query4VtObject(string sql);
DataSet Query4DataSet(object obj);
IResultSet Query4ResultSet(string sql);
Hashtable Query4Hashtable(string sql);
DataRow Query4DataRow(string strSql);
IDataReader Query4DataReader(string strSql);
int Insert(object ormTable);
int Update(object ormTable);
int Delete(object ormTable);
bool Delete(string tableName);
2. 以下是数据层调用入口:
1 /// <summary>
2 /// Default Handler Operator for any database
3 /// </summary>
4 public static IDbOperator DefaultDbOperator()
5 {
6 //get instance by db interface, such as SQL Server, Access, MYSQL,
7 Instance instance = new Instance();
8 object objDb = instance.GetInstance();
9 IDbOperator db = objDb as IDbOperator;
10 if (db == null)
11 {
12 throw new NotSuportedDbException();
//need to write a library to support this database
13 }
14 return db;
15 }
在调用数据时,只需要使用
IDbOperator db=DbFactory.DefaultDbOperator();
3. 数据层后台配置:
从下面的配置,大家就应该可以看出,持久数据层框架支持任何类型的数据库。
<SQLServer type="Zivsoft.Data.SQLServerDbOperator;SQLServer">
<add key="ConnectionString" value="…"/>
<add key="AutoCreateTable" value="true"/>
<add key="AutoCreateDb" value="false"/>
</SQLServer>
<MySQL type="Zivsoft.Data.MySQLDbOperator;MySQL">
<add key="ConnectionString" value="…"/>
<add key="AutoCreateTable" value="true"/>
<add key="AutoCreateDb" value="false"/>
</MySQL>
</Data>