下载
关于数据库操作的第三方类库比比谐是,比如有名的NHibernate,ActiveRecord,等等。ActiveRecord在开发项目中也用,但感觉不是很好用,最大的优点是,基本的添加修改,删除等操作,不需要写任何代码,但对于一些复杂的数据库查询,总感觉不太方便,如果实体类建的有问题也不好查错误。
今天试着封装了一个数据库操作类,都是些基本的操作,起什么名字好呢?功能简单,简单的就是最好的,故起名曰"SimpleDB".
先介绍一下实体类的创建:
[Table("test")]
public class PersonInfo
{
#region 私有变量
private int _id;
private int _age;
private string _name;
#endregion
#region 属性
/// <summary>
///
/// </summary>
[PrimaryKey("id",PrimaryKeyType.AutoGenerate)]
public int PersonId
{
set { _id = value; }
get { return _id; }
}
/// <summary>
///
/// </summary>
public int Age
{
set { _age = value; }
get { return _age; }
}
/// <summary>
///
/// </summary>
[Field("name")]
public string UserName
{
set { _name = value; }
get { return _name; }
}
#endregion Model
}
}
[Table("test")]
public class PersonInfo
Table属性,用来设置对应的数据库表名,当类名跟表名相同时可以不用Table属性。
[PrimaryKey("id",PrimaryKeyType.AutoGenerate)]
public int PersonId
{
set { _id = value; }
get { return _id; }
}
PrimaryKey("id",PrimaryKeyType.AutoGenerate),用来设置主键的属性,一是主键的字段名,一是主键的类别,一种是AutoGenerate自动增长,Assigned为非自动增长。
[Field("name")]
public string UserName
{
set { _name = value; }
get { return _name; }
}
用来设置普通字段的属性,指定该属性对应的数据库字段名称,当属性名,跟数据库字段的名称相同时,可以省略。
public class Person:Simples<Model.PersonInfo>
这样Person类就继承了Add(PersonInfo info),Update(PersonInfo info),Delete(PersonInfo info)等方法。
除了基本的添加,修改,删除的基本操作,还封装了以下方法:
protected T GetInfoBySql(string strSql,params SqlParameter[] parm) 传SQL语句,返回一个实体类。
protected T GetByDataRow(DataRow dr) 传一个DataRow,返回一个实体类
protected T GetByReader(SqlDataReader reader)传SqlDataReader,返回一个实体类。
底层的数据库操作,在DBHelper.cs里,可根据需要进行修改。
下载