写了几年的三层架,突发奇想,如果能写一套通用的Insert,Update 语句,不用每次都写存储过程,SQL,那是不是少了很多工作量。然后就试着写了个
首先定义一个实体类
public class Industry
{
private int id;
[AllTargetsAttribute(IsKey = true)]
public int Id
{
get { return id; }
set { id = value; }
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int? pid;
public int? Pid
{
get { return pid; }
set { pid = value; }
}
}
AllTargetsAttribute是我自定义的一个标记,目的是为了标记实体映射表的主键列,true表示这个字段为主键 AllTargetsAttribute代码如下
// 该Attribute对所有的元素有效.
[AttributeUsage(AttributeTargets.All)]
public class AllTargetsAttribute : Attribute
{
private bool isKey = false;
public bool IsKey
{
get { return isKey; }
set { isKey = value; }
}
}
开始写DAL方法,首先我定义一个DbHelper抽象类,为了可扩展
public abstract class DbHelper
{
public abstract int AddModel<T>(T t);
}
定义了一个泛型的抽象添加方法AddMod