PetaPoco轻量级ORM框架 - 对Database类的进行扩展,能够返回Table格式数据

 

1、有时咱们须要将经常使用的功能添加到PetaPoco中的Database类中sql

实现方式有2种,如下以查询字段为例ide

1.经过扩展方式实现,此方式不改变被调用(Database)类名(只能增长方法)this

public static class DatabaseExtensionspa

{
  public static T SingleOrDefaultWithWhere<T>(this Database db, string name, object value)
  {
    string sql = "WHERE " + name + " = @0";
    return db.SingleOrDefault<T>(sql, value);
  }
}日志

2.经过继承Database类,之后全部调用都直接调用Db类(不但能够增长方法、还能够对虚方法进行重写[如执行的SQL语句日志等],推荐)code

public partial class Db : Database对象

{
  public T SingleOrDefaultWithWhere<T>(this Database db, string name, object value)
  {
    string sql = "WHERE " + name + " = @0";
    return db.SingleOrDefault<T>(sql, value);
  }
}blog

 

2、有时咱们不须要返回实体对象,须要返回一个DataTable格式的数据,这时就须要对Database进行扩展,继承

        如下是返回一个DataTable格式的数据:cmd

public DataTable Table(string sql, params object[] args)
        {
            OpenSharedConnection();
            try
            {
                using (var cmd = CreateCommand(Connection, sql, args))
                {
                    using (DbDataAdapter dbDataAdapter = Provider.GetFactory().CreateDataAdapter())
                    {
                        DataTable dt = new DataTable();
                        dbDataAdapter.SelectCommand = (DbCommand)cmd;
                        dbDataAdapter.Fill(dt);
                        OnExecutedCommand(cmd);
                        return dt;
                    }
                }
            }
            catch (Exception x)
            {
                if (OnException(x))
                    throw;
                return null;
            }
            finally
            {
                CloseSharedConnection();
            }
        }
相关文章
相关标签/搜索