/// <summary>
        /// 获取 CodeFirstItem 列表
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="modelType"></param>
        /// <returns></returns>
        internal static List <CodeFirstItem> GetModelAttributeInfo(Type modelType)
        {
            Type tModel = modelType;

            var props = tModel.GetProperties();

            List <CodeFirstItem> itemsList = new List <CodeFirstItem>();

            foreach (var prop in props)
            {
                CodeFirstItem itemModel = new CodeFirstItem();

                var attributes = prop.GetCustomAttributes(false);

                foreach (var attribute in attributes)
                {
                    InitItemModel(itemModel, attribute);
                }

                itemModel.ItemName = prop.Name;


                itemsList.Add(itemModel);
            }

            return(itemsList);
        }
        /// <summary>
        /// 根据Attribute赋值
        /// </summary>
        /// <param name="itemModel"></param>
        /// <param name="attribute"></param>
        private static void InitItemModel(CodeFirstItem itemModel, object attribute)
        {
            Type t = attribute.GetType();

            switch (t.Name)
            {
            case "DisplayTypeAttribute":

                DisplayTypeAttribute attr1 = attribute as DisplayTypeAttribute;

                if (attr1 != null)
                {
                    itemModel.DisplayType = attr1.DisplayType;
                }

                break;

            case "ItemDisplayNameAttribute":

                ItemDisplayNameAttribute attr2 = attribute as ItemDisplayNameAttribute;

                if (attr2 != null)
                {
                    itemModel.ItemDisplayName = attr2.DisplayName;
                }

                break;

            case "KeyPropertyAttribute":

                KeyPropertyAttribute attr3 = attribute as KeyPropertyAttribute;

                if (attr3 != null)
                {
                    itemModel.IsKey = true;
                }

                break;

            default:
                break;
            }
        }