/// <summary>
        /// Loads the items based on type
        /// </summary>
        /// <param name="OrderBy">What the data is ordered by</param>
        /// <param name="PageSize">Page size</param>
        /// <param name="CurrentPage">Current page (0 based)</param>
        /// <param name="Params">Parameters used to specify what to load</param>
        /// <param name="Session">ORM session variable</param>
        /// <param name="Command">Command to run</param>
        /// <returns>All items that fit the specified query</returns>
        public static IEnumerable <ObjectType> PagedCommand(Session Session, string Command, string OrderBy = "", int PageSize = 25, int CurrentPage = 0, params IParameter[] Params)
        {
            IEnumerable <ObjectType> instance = new List <ObjectType>();
            LoadingEventArgs         E        = new LoadingEventArgs();

            ObjectBaseClass <ObjectType, IDType> .OnLoading(null, E);

            if (!E.Stop)
            {
                instance = Session.PagedCommand <ObjectType>(Command, OrderBy, PageSize, CurrentPage, Params);
                foreach (ObjectType Item in instance)
                {
                    Item.OnLoaded(new LoadedEventArgs());
                }
            }
            return(instance);
        }
        /// <summary>
        /// Loads the items based on type
        /// </summary>
        /// <param name="Command">Command</param>
        /// <param name="CommandType">Command type</param>
        /// <param name="Params">Parameters used to specify what to load</param>
        /// <param name="Session">ORM session variable</param>
        /// <returns>All items that fit the specified query</returns>
        public static IEnumerable <ObjectType> All(Session Session, string Command, CommandType CommandType, params IParameter[] Params)
        {
            IEnumerable <ObjectType> instance = new List <ObjectType>();
            LoadingEventArgs         E        = new LoadingEventArgs();

            ObjectBaseClass <ObjectType, IDType> .OnLoading(null, E);

            if (!E.Stop)
            {
                instance = Session.All <ObjectType>(Command, CommandType, Params);
                foreach (ObjectType Item in instance)
                {
                    Item.OnLoaded(new LoadedEventArgs());
                }
            }
            return(instance);
        }
        /// <summary>
        /// Loads the items based on type
        /// </summary>
        /// <param name="Params">Parameters used to specify what to load</param>
        /// <returns>All items that fit the specified query</returns>
        public static IEnumerable <ObjectType> All(params IParameter[] Params)
        {
            IEnumerable <ObjectType> instance = new List <ObjectType>();
            var E = new LoadingEventArgs();

            ObjectBaseClass <ObjectType, IDType> .OnLoading(null, E);

            if (!E.Stop)
            {
                instance = QueryProvider.All <ObjectType>(Params);
                foreach (ObjectType Item in instance)
                {
                    Item.OnLoaded(new LoadedEventArgs());
                }
            }
            return(instance);
        }
 /// <summary>
 /// Saves a list of objects
 /// </summary>
 /// <param name="Objects">List of objects</param>
 public static void Save(List <ObjectType> Objects)
 {
     ObjectBaseClass <ObjectType, IDType> .Save(Objects, ORM.CreateSession());
 }