diff Source/DataAccess/SprocQueryT.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/SprocQueryT.cs	Thu Mar 27 21:46:09 2014 +0400
@@ -0,0 +1,218 @@
+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)
+		{
+			var 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
+	}
+}