zoukankan      html  css  js  c++  java
  • PetaPoco轻量级ORM框架

    一、有时我们需要将常用的功能添加到PetaPoco中的Database类中

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

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

    public static class DatabaseExtension

    {
      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语句日志等],推荐)

    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);
      }
    }

    二、有时我们不需要返回实体对象,需要返回一个DataTable格式的数据,这时就需要对Database进行扩展,

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

    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();
                }
            }
  • 相关阅读:
    Java 字节码解释说明
    JVM垃圾回收:G1回收器
    JVM 参数
    HotSpot 虚拟机对象探秘
    JDK 内置图形界面工具
    Java 内存模型
    在网络设备上调试 Android 程序
    .NET MVC异步调用中的Session问题
    在MVC的ApiController中实现统一校验
    使用 AndroidX86 在虚拟机中作为调试设备
  • 原文地址:https://www.cnblogs.com/slwangzi/p/8509659.html
Copyright © 2011-2022 走看看