Business Logic Toolkit for .NET
www.bltoolkit.net
|  Home   |  Download   |  Documentation   |  Discussions   |  License   |

  Source.DataAccess.SprocQueryT.cs

 
using System.Collections.Generic;

using BLToolkit.Data;

namespace BLToolkit.DataAccess
{
    public class SprocQuery<T> : DataAccessorBase
    {
        #region Constructors

        public SprocQuery()
        {
        }

        public SprocQuery(DbManager dbManager)
            : base(dbManager)
        {
        }

        public SprocQuery(DbManager dbManager, bool dispose)
            : base(dbManager, dispose)
        {
        }

        #endregion

        #region SelectByKey

        public virtual T SelectByKey(DbManager db, params object[] key)
        {
            return db
                .SetSpCommand(GetSpName(typeof(T), "SelectByKey"), key)
                .ExecuteObject<T>();
        }

        public virtual T SelectByKey(params object[] key)
        {
            DbManager db = GetDbManager();

            try
            {
                return SelectByKey(db, key);
            }
            finally
            {
                Dispose(db);
            }
        }

        #endregion

        #region SelectAll

        public virtual List<T> SelectAll(DbManager db)
        {
            return db
                .SetSpCommand(GetSpName(typeof(T), "SelectAll"))
                .ExecuteList<T>();
        }

        public virtual L SelectAll<L>(DbManager db, L list)
            where L : IList<T>
        {
            return db
                .SetSpCommand(GetSpName(typeof(T), "SelectAll"))
                .ExecuteList<L,T>(list);
        }

        public virtual L SelectAll<L>(DbManager db)
            where L : IList<T>, new()
        {
            return SelectAll<L>(db, new L());
        }

        public virtual List<T> SelectAll()
        {
            DbManager db = GetDbManager();

            try
            {
                return SelectAll(db);
            }
            finally
            {
                Dispose(db);
            }
        }

        public virtual L SelectAll<L>(L list)
            where L : IList<T>
        {
            DbManager db = GetDbManager();

            try
            {
                return SelectAll(db, list);
            }
            finally
            {
                Dispose(db);
            }
        }

        public virtual L SelectAll<L>()
            where L : IList<T>, new()
        {
            return SelectAll<L>(new L());
        }

        #endregion

        #region Insert

        public virtual void Insert(DbManager db, T obj)
        {
            db
              .SetSpCommand(
                    GetSpName(obj.GetType(), "Insert"),
                    db.CreateParameters(obj))
              .ExecuteNonQuery();
        }

        public virtual void Insert(T obj)
        {
            DbManager db = GetDbManager();

            try
            {
                Insert(db, obj);
            }
            finally
            {
                Dispose(db);
            }
        }

        #endregion

        #region Update

        public virtual int Update(DbManager db, T obj)
        {
            return db
                .SetSpCommand(
                    GetSpName(obj.GetType(), "Update"),
                    db.CreateParameters(obj))
                .ExecuteNonQuery();
        }

        public virtual int Update(T obj)
        {
            DbManager db = GetDbManager();

            try
            {
                return Update(db, obj);
            }
            finally
            {
                Dispose(db);
            }
        }

        #endregion

        #region DeleteByKey

        public virtual int DeleteByKey(DbManager db, params object[] key)
        {
            return db
                .SetSpCommand(GetSpName(typeof(T), "Delete"), key)
                .ExecuteNonQuery();
        }

        public virtual int DeleteByKey(params object[] key)
        {
            DbManager db = GetDbManager();

            try
            {
                return DeleteByKey(db, key);
            }
            finally
            {
                Dispose(db);
            }
        }

        #endregion

        #region Delete

        public virtual int Delete(DbManager db, T obj)
        {
            return db
                .SetSpCommand(
                    GetSpName(obj.GetType(), "Delete"), 
                    db.CreateParameters(obj))
                .ExecuteNonQuery();
        }

        public virtual int Delete(T obj)
        {
            DbManager db = GetDbManager();

            try
            {
                return Delete(db, obj);
            }
            finally
            {
                Dispose(db);
            }
        }

        #endregion
    }
}
 
© 2010 www.bltoolkit.net
support@bltoolkit.net