.Net  

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

posted on 2007-04-15 18:07  东方新秀  阅读(339)  评论(0编辑  收藏  举报