Mercurial > pub > bltoolkit
diff Source/DataAccess/SqlQuery.cs @ 0:f990fcb411a9
Копия текущей версии из github
author | cin |
---|---|
date | Thu, 27 Mar 2014 21:46:09 +0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Source/DataAccess/SqlQuery.cs Thu Mar 27 21:46:09 2014 +0400 @@ -0,0 +1,336 @@ +using System; +using System.Collections; + +using BLToolkit.Data; +using BLToolkit.Reflection.Extension; + +namespace BLToolkit.DataAccess +{ + public class SqlQuery : SqlQueryBase + { + #region Constructors + + public SqlQuery() + { + } + + public SqlQuery(DbManager dbManager) + : base(dbManager) + { + } + + public SqlQuery(DbManager dbManager, bool dispose) + : base(dbManager, dispose) + { + } + + public SqlQuery(ExtensionList extensions) + { + Extensions = extensions; + } + + #endregion + + #region Overrides + + public SqlQueryInfo GetSqlQueryInfo<T>(DbManager db, string actionName) + { + return base.GetSqlQueryInfo(db, typeof(T), actionName); + } + + #endregion + + #region SelectByKey + + public virtual object SelectByKey(DbManager db, Type type, params object[] keys) + { + var query = GetSqlQueryInfo(db, type, "SelectByKey"); + + return db + .SetCommand(query.QueryText, query.GetParameters(db, keys)) + .ExecuteObject(type); + } + + public virtual object SelectByKey(Type type, params object[] keys) + { + var db = GetDbManager(); + + try + { + return SelectByKey(db, type, keys); + } + finally + { + if (DisposeDbManager) + db.Dispose(); + } + } + + public virtual T SelectByKey<T>(DbManager db, params object[] keys) + { + var query = GetSqlQueryInfo(db, typeof(T), "SelectByKey"); + + return db + .SetCommand(query.QueryText, query.GetParameters(db, keys)) + .ExecuteObject<T>(); + } + + public virtual T SelectByKey<T>(params object[] keys) + { + var db = GetDbManager(); + + try + { + return SelectByKey<T>(db, keys); + } + finally + { + if (DisposeDbManager) + db.Dispose(); + } + } + + #endregion + + #region SelectAll + + public virtual ArrayList SelectAll(DbManager db, Type type) + { + var query = GetSqlQueryInfo(db, type, "SelectAll"); + + return db + .SetCommand(query.QueryText) + .ExecuteList(type); + } + + public virtual IList SelectAll(DbManager db, IList list, Type type) + { + var query = GetSqlQueryInfo(db, type, "SelectAll"); + + return db + .SetCommand(query.QueryText) + .ExecuteList(list, type); + } + + public virtual ArrayList SelectAll(Type type) + { + var db = GetDbManager(); + + try + { + return SelectAll(db, type); + } + finally + { + Dispose(db); + } + } + + public virtual IList SelectAll(IList list, Type type) + { + var db = GetDbManager(); + + try + { + return SelectAll(db, list, type); + } + finally + { + Dispose(db); + } + } + + public virtual System.Collections.Generic.List<T> SelectAll<T>(DbManager db) + { + var query = GetSqlQueryInfo(db, typeof(T), "SelectAll"); + + return db + .SetCommand(query.QueryText) + .ExecuteList<T>(); + } + + public virtual TL SelectAll<TL,T>(DbManager db, TL list) + where TL : System.Collections.Generic.IList<T> + { + var query = GetSqlQueryInfo(db, typeof(T), "SelectAll"); + + return db + .SetCommand(query.QueryText) + .ExecuteList<TL,T>(list); + } + + public virtual TL SelectAll<TL,T>(DbManager db) + where TL : System.Collections.Generic.IList<T>, new() + { + return SelectAll<TL,T>(db, new TL()); + } + + public virtual System.Collections.Generic.List<T> SelectAll<T>() + { + var db = GetDbManager(); + + try + { + return SelectAll<T>(db); + } + finally + { + Dispose(db); + } + } + + public virtual TL SelectAll<TL,T>(TL list) + where TL : System.Collections.Generic.IList<T> + { + var db = GetDbManager(); + + try + { + return SelectAll<TL,T>(db, list); + } + finally + { + Dispose(db); + } + } + + public virtual TL SelectAll<TL,T>() + where TL : System.Collections.Generic.IList<T>, new() + { + return SelectAll<TL,T>(new TL()); + } + + #endregion + + #region Insert + + public virtual int Insert(DbManager db, object obj) + { + var query = GetSqlQueryInfo(db, obj.GetType(), "Insert"); + + return db + .SetCommand(query.QueryText, query.GetParameters(db, obj)) + .ExecuteNonQuery(); + } + + public virtual int Insert(object obj) + { + var db = GetDbManager(); + + try + { + return Insert(db, obj); + } + finally + { + Dispose(db); + } + } + + #endregion + + #region Update + + public virtual int Update(DbManager db, object obj) + { + var query = GetSqlQueryInfo(db, obj.GetType(), "Update"); + + return db + .SetCommand(query.QueryText, query.GetParameters(db, obj)) + .ExecuteNonQuery(); + } + + public virtual int Update(object obj) + { + var db = GetDbManager(); + + try + { + return Update(db, obj); + } + finally + { + Dispose(db); + } + } + + #endregion + + #region DeleteByKey + + public virtual int DeleteByKey(DbManager db, Type type, params object[] key) + { + var query = GetSqlQueryInfo(db, type, "Delete"); + + return db + .SetCommand(query.QueryText, query.GetParameters(db, key)) + .ExecuteNonQuery(); + } + + public virtual int DeleteByKey(Type type, params object[] key) + { + var db = GetDbManager(); + + try + { + return DeleteByKey(db, type, key); + } + finally + { + Dispose(db); + } + } + + public virtual int DeleteByKey<T>(DbManager db, params object[] key) + { + var query = GetSqlQueryInfo(db, typeof(T), "Delete"); + + return db + .SetCommand(query.QueryText, query.GetParameters(db, key)) + .ExecuteNonQuery(); + } + + public virtual int DeleteByKey<T>(params object[] key) + { + var db = GetDbManager(); + + try + { + return DeleteByKey<T>(db, key); + } + finally + { + Dispose(db); + } + } + + #endregion + + #region Delete + + public virtual int Delete(DbManager db, object obj) + { + var query = GetSqlQueryInfo(db, obj.GetType(), "Delete"); + + return db + .SetCommand(query.QueryText, query.GetParameters(db, obj)) + .ExecuteNonQuery(); + } + + public virtual int Delete(object obj) + { + var db = GetDbManager(); + + try + { + return Delete(db, obj); + } + finally + { + Dispose(db); + } + } + + #endregion + } +}