/// <summary>
        /// Xóa đối tượng theo id
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="id"></param>
        /// <returns></returns>
        /// Created by: NVCUONG (05/03/2018)
        public int DeleteEntityById(object id)
        {
            string storeName = GenerateProcUtility <T> .DeleteEntityByPrimaryKey();

            var    entity    = Activator.CreateInstance <T>();
            string tableName = entity.GetType().Name;

            return(Delete(storeName, new object[] { id }));
        }
        /// <summary>
        /// Xóa đối tượng theo với nhiều tham số đầu vào
        /// </summary>
        /// <typeparam name="T">entiy</typeparam>
        /// <param name="param">mảng các tham số truyền vào</param>
        /// <returns></returns>
        /// Created by: NVCUONG (05/03/2018)
        public int DeleteEntity_ByMultiParam(object[] param)
        {
            string strProc = GenerateProcUtility <T> .DeleteEntityByPrimaryKey();

            var    entity    = Activator.CreateInstance <T>();
            string tableName = entity.GetType().Name;

            return(Delete(strProc, new object[] { param }));
        }
 /// <summary>
 /// Lấy một mảng dữ liệu cho Entity
 /// </summary>
 /// <returns>Mảng dữ liệu</returns>
 /// Created By: NVCUONG (19/04/2018)
 public IEnumerable <T> GetEntities()
 {
     return(base.GetEntities <T>(GenerateProcUtility <T> .GetListEntity()));
 }
        /// <summary>
        /// Lấy danh sách đối tượng theo tham số (test)
        /// </summary>
        /// <typeparam name="T">Đối tượng tác động</typeparam>
        /// <param name="param">Mảng các tham số</param>
        /// <returns>Danh sách dữ liệu được phân trang</returns>
        /// Created by: NVCUONG (20/06/2018)
        public Paging <T> SelectEntitiesPaging(object[] param)
        {
            string storeName = GenerateProcUtility <T> .SelectEntitiesPaging();

            return(SelectEntitiesPaging <T>(storeName, param));
        }
        public int InsertEntity(T entity)
        {
            string storeName = GenerateProcUtility <T> .InsertEntity();

            return(Update(entity, storeName));
        }
        /// <summary>
        /// Lấy danh sách đối tượng theo tham số (test)
        /// </summary>
        /// <typeparam name="T">Đối tượng tác động</typeparam>
        /// <param name="param">Mảng các tham số</param>
        /// <returns>Danh sách dữ liệu</returns>
        /// Created by: NVCUONG (20/06/2018)
        public IEnumerable <T> GetEntities_ByMultiParam(object param)
        {
            string storeName = GenerateProcUtility <T> .GetListEntity_ByMultiParam();

            return(GetEntities(storeName, (new object[] { param })));
        }
        /// <summary>
        /// Lấy thông tin đối tượng theo ID của đối tượng
        /// </summary>
        /// <typeparam name="T">Entity</typeparam>
        /// <param name="entityId">Khóa chính của Entity</param>
        /// <returns>Entity</returns>
        /// Created by: NVCUONG (20/04/2018)
        public T GetEntityByEntityId(object entityId)
        {
            string storeName = GenerateProcUtility <T> .GetEntityById();

            return(GetEntities(storeName, (new object[] { entityId })).FirstOrDefault());
        }
        ///// <summary>
        ///// Lấy danh sách chứa toàn bộ các đối tượng
        ///// </summary>
        ///// <typeparam name="T"></typeparam>
        ///// <returns></returns>
        public IEnumerable <T> GetEntitiesAll()
        {
            string storeName = GenerateProcUtility <T> .GetEntities();

            return(GetEntities(storeName));
        }
 /// <summary>
 /// Xóa entity
 /// </summary>
 /// <param name="entity">Entity cần xóa (hàm chưa hoàn chỉnh)</param>
 /// <returns></returns>
 /// Created by: NVCUONG (17/04/2017)
 public virtual int Delete()
 {
     return(base.Delete(GenerateProcUtility <T> .DeleteEntityByPrimaryKey(), new object[] { }));
 }
 /// <summary>
 /// Cập nhật (có thể là thêm mới hoặc sửa) Entity (store thực hiện cập nhật chương trình sẽ tự sinh theo Template)
 /// </summary>
 /// <param name="entity">Entity truyền vào</param>
 /// <returns>Số lượng bản ghi cập nhật thành công</returns>
 /// Created By: NVCUONG (17/04/2017)
 public int Update(T entity)
 {
     return(base.Update <T>(entity, GenerateProcUtility <T> .UpdateEntity()));
 }