⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pubfuncs.cs

📁 一个小型的ORM框架,写得不好请多多指教
💻 CS
📖 第 1 页 / 共 2 页
字号:
//using System;
//using System.Collections;
//using System.Collections.Generic;
//using System.Text;
//using System.Data;
//using System.Data.SqlClient;
//using System.Reflection;
//using System.Transactions;

//namespace MiniORM.BAK
//{
//    public class PubFuncs
//    {
//        private static Hashtable _HashKeyName = new Hashtable();
//        private static Hashtable _HashForeignKeyName = new Hashtable();
//        private static Hashtable _HashTablename = new Hashtable();
//        private static Hashtable _HashObjectType = new Hashtable();

//        /// <summary>
//        /// 返回对象的Select语句,在读取对象的时候使用
//        /// </summary>
//        /// <param name="ModelObject"></param>
//        /// <returns></returns>
//        public static string GetReadSQL(object ModelObject, ref List<SqlParameter> Params)
//        {
//            string strSelectSQL = "SELECT {0} FROM {1} WHERE {2};";
//            string strTablename = "";
//            string strWhere = "";

//            StringBuilder sbFields = new StringBuilder();

//            //取数据库表名
//            strTablename = PubFuncs.GetTableName(ModelObject);

//            PropertyInfo[] props = ModelObject.GetType().GetProperties();
//            MiniORMAttribute.DataFieldAttribute FieldAttr = null;
//            object[] CustomAttributes;

//            int i = 0;
//            foreach (PropertyInfo prop in props)
//            {
//                CustomAttributes = prop.GetCustomAttributes(typeof(MiniORMAttribute.DataFieldAttribute), false);
//                if (CustomAttributes.Length > 0)
//                {
//                    FieldAttr = CustomAttributes[0] as MiniORMAttribute.DataFieldAttribute;

//                    if (FieldAttr is MiniORMAttribute.DataFieldAttribute)
//                    {
//                        if (i > 0) sbFields.Append(",");
//                        sbFields.Append(FieldAttr.FieldName);
//                        i++;

//                        //对于标识字段,不做处理
//                        if (FieldAttr.IsIdentity)
//                        {
//                            //构造 " WHERE ID = @ID "这样的语句
//                            strWhere += (((strWhere.Length == 0) ? " " : " AND ") + FieldAttr.FieldName + " = @" + FieldAttr.FieldName);
//                            //采用在GetInsertSQL中,顺便进行Param的初始化,这样避免两次对ModelObject进行反射操作
//                            Params.Add(new SqlParameter("@" + FieldAttr.FieldName, prop.GetValue(ModelObject, null)));
//                        }
//                    }
//                }
//            }

//            if (strWhere == "")
//            {
//                //如果没有设置Indentity字段的话,那么设置不读取信息
//                strWhere = " 1=2 ";
//            }

//            if (sbFields.ToString().Trim() != "")
//            {
//                string[] Args = new string[] { sbFields.ToString(), strTablename, strWhere };
//                string strReturn = string.Format(strSelectSQL, Args);

//                return strReturn;
//            }
//            else
//            {
//                throw new Exception(ModelObject.ToString() + "构造Select语句失败,字段字符串为空。");
//            }
//        }

//        /// <summary>
//        /// 返回Insert语句:格式:Insert into Tablename (Field1,Field2,...Fieldn) Values(@Field1,@Field2,...@Fieldn)
//        /// </summary>
//        /// <param name="ModelObject"></param>
//        /// <param name="Params"></param>
//        /// <returns></returns>
//        public static string GetInsertSQL(object ModelObject, ref List<SqlParameter> Params)
//        {
//            string strTablename = "";
//            string strInsertSQL = "DECLARE @IDENTITY_ID INT,@ERR_CODE INT;INSERT INTO {0}({1}) VALUES({2});SELECT @IDENTITY_ID = @@IDENTITY,@ERR_CODE=@@ERROR;SELECT @IDENTITY_ID, @ERR_CODE";

//            System.Text.StringBuilder strFields = new System.Text.StringBuilder();
//            System.Text.StringBuilder strValues = new System.Text.StringBuilder();
//            int i = 0;

//            //取数据库表名
//            strTablename = GetTableName(ModelObject);

//            PropertyInfo[] props = ModelObject.GetType().GetProperties();
//            MiniORMAttribute.DataFieldAttribute FieldAttr = null;
//            object[] CustomAttributes;

//            i = 0;
//            foreach (PropertyInfo prop in props)
//            {
//                CustomAttributes = prop.GetCustomAttributes(typeof(MiniORMAttribute.DataFieldAttribute), false);
//                if (CustomAttributes.Length > 0)
//                {
//                    FieldAttr = CustomAttributes[0] as MiniORMAttribute.DataFieldAttribute;
//                    if (FieldAttr != null)
//                    {
//                        if (FieldAttr is MiniORMAttribute.DataFieldAttribute)
//                        {
//                            //对于标识字段,不做处理
//                            if (!FieldAttr.IsIdentity)
//                            {
//                                if (i > 0)
//                                {
//                                    strFields.Append(",");
//                                    strValues.Append(",");
//                                }

//                                //只处理值类型字段,对于引用类型或者其他类型的变量,将作为Model对象来另外处理

//                                strFields.Append(FieldAttr.FieldName);
//                                strValues.Append("@" + FieldAttr.FieldName);

//                                i++;
//                            }

//                            //采用在GetInsertSQL中,顺便进行Param的初始化,这样避免两次对ModelObject进行反射操作
//                            Params.Add(new SqlParameter("@" + FieldAttr.FieldName, prop.GetValue(ModelObject, null)));
//                        }
//                    }
//                }
//            }

//            if (strFields.ToString().Trim() != "" && strValues.ToString().Trim() != "")
//            {
//                string[] Args = new string[] { strTablename, strFields.ToString(), strValues.ToString() };
//                string strReturn = string.Format(strInsertSQL, Args);

//                return strReturn;
//            }
//            else
//            {
//                throw new Exception(ModelObject.ToString() + "构造Insert语句失败,字段字符串为空。");
//            }
//        }

//        /// <summary>
//        /// 返回Update语句,如果ModelObject.PrimaryKey不存在,那么将返回InsertSQL
//        /// </summary>
//        /// <param name="ModelObject"></param>
//        /// <returns></returns>
//        public static string GetUpdateSQL(object ModelObject, ref List<SqlParameter> Params)
//        {
//            string strUpdateSQL = "UPDATE {0} SET {1} WHERE {2}";
//            string strTablename = "";
//            string strWHERE = "";
//            StringBuilder strSET = new StringBuilder();
//            int i = 0;

//            //取数据库表名
//            strTablename = GetTableName(ModelObject);

//            MiniORMAttribute.DataFieldAttribute FieldAttr = null;
//            PropertyInfo[] props = ModelObject.GetType().GetProperties();
//            object[] CustomAttributes;

//            foreach (PropertyInfo prop in props)
//            {
//                CustomAttributes = prop.GetCustomAttributes(typeof(MiniORMAttribute.DataFieldAttribute), false);
//                if (CustomAttributes.Length > 0)
//                {
//                    FieldAttr = CustomAttributes[0] as MiniORMAttribute.DataFieldAttribute;
//                    if (FieldAttr != null)
//                    {
//                        if (FieldAttr.IsIdentity)
//                        {
//                            object keyvalue = prop.GetValue(ModelObject, null);
//                            //如果要修改的记录主键为0(对于int类型)或者为空(对于char型),那么执行插入操作
//                            if (Convert.ToString(keyvalue) == "0" || Convert.ToString(keyvalue) == "")
//                            {
//                                //重新清空Parameter,避免在InsertSQL中发生重复
//                                Params.Clear();
//                                return GetInsertSQL(ModelObject, ref Params);
//                            }
//                            strWHERE = FieldAttr.FieldName + " = @" + FieldAttr.FieldName;
//                        }
//                        else
//                        {
//                            if (i > 0) strSET.Append(",");

//                            strSET.Append(FieldAttr.FieldName + " = @" + FieldAttr.FieldName);
//                            i++;
//                        }

//                        //采用在GetInsertSQL中,顺便进行Param的初始化,这样避免两次对ModelObject进行反射操作
//                        Params.Add(new SqlParameter("@" + FieldAttr.FieldName, prop.GetValue(ModelObject, null)));
//                    }
//                }
//            }

//            if (strSET.Length > 0)
//            {
//                return string.Format(strUpdateSQL, new string[] { strTablename, strSET.ToString(), strWHERE });
//            }

//            return "";
//        }

//        /// <summary>
//        /// 返回指定程序集,指定命名空间,指定类名的类型
//        /// </summary>
//        /// <param name="assemblyname">程序集名</param>
//        /// <param name="namespacename">命名空间</param>
//        /// <param name="classname">类名</param>
//        /// <returns></returns>
//        public static Type GetObjectType(string assemblyname, string namespacename, string classname)
//        {
//            Type objType = (Type)_HashObjectType[assemblyname + namespacename + classname];

//            if (objType == null)
//            {
//                object obj = _HashObjectType[assemblyname + namespacename + classname];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -