1。使用三层结构,数据访问层将每一个表进行封装,每一个表类有几乎相同的操作函数。
2。使用三层结构,数据访问层不将每个表封装,是一个通用的数据库访问类,在业务层或表现层直接编写SQL语句执行。
3。不使用三层结构,数据访问使用统一的数据库访问类,在CS文件中直接编写SQL语句使用数据库类行。
对数据库的访问,提倡用NHibernate。
首先设计好数据库,然后拿代码生成工具生成类!我用的sqlserver,迁移肯定是不行的了。
然后我将生成的实体类继承一个基类:基类利用泛型,有增删改查四类方法。
如下:
public class A<T>
{
public int Save()
{
//通过某类创建或连接session
session.Save(this);
//通过某类关闭或释放session
}
//修改和删除类似
//查询,由于不同的类查询返回不同,所以返回一个泛型
public static T select(string content)
{
//拼组成查询字符串
string mySelect =fangfa(content);
//查询方法名忘记了,汗。好像是createque什么的。
T a= (T)session.查询()
}
//查询多个
public statie T[] selectArrey(string content)
{
//用list
}
}
这样实体类
class B:A<B>
{}
比如增加纪录
B b=new B();
b.Name="某某";
b.Save();
//修改删除类似
查询单个纪录
B b=B.select("Id,'100'") //查询ID为100的B纪录。
查询多个纪录
B[] b=B.selectArrey("Name,'小艺',Sex,'0'") //查询姓名为小艺且性别为女的纪录。
-------
这样所有实体类都不用写数据库操作了,继承就可以。
直接设计好数据库然后用代码生成工具生成类的,这样不好。迁移很困难。
当然,增删改有事务处理。可能需要增删改多个表(类)。
如增加
//增加一个对象
public int Save()
{
int message=0;
ISession session=一个连接类.opensession()
itrass trans=session.beginiuij // 事务处理,名字不记得了,机子上没有代码
try
{
session.Save(this);
trans.commit(0;
}
catch
{
trans.roback();
message=(int)Error
}
finially
{
一个连接类.closeSession(session);
}
return message;
}
//需同时增加多个对象
public void Save(ISession session)
{
session.Save(this);
}
参考网址:http://community.csdn.net/Expert/topic/5349/5349356.xml?temp=.5791742