.NET餐厅管理系统sql数据帮助类执行对单个Entity的插入
admin
2024-03-05 13:56:00
0

 #region  //执行对单个Entity的插入
    ///


    /// 执行对单个Entity的插入(多表操作,表中含有自增字段慎用) 返回值是Entity的第一个属性
    ///

    ///
    public string ExecuteObjectInput(BaseEntity baseEntity, string tableName)
    {
        string sql_ = "";//values 之前
        try
        {
            Type type = baseEntity.GetType();//得到对象类型
            IList tableAttribute = type.GetCustomAttributesData();//该方法是根据Type属性找到的
            //string tableName = "";//表名
            //tableName = (String)tableAttribute[0].ConstructorArguments[0].Value;//解刨Type属性中偶然发现
            string operation = "insert into ";//执行操作方法
            PropertyInfo[] propertyList = type.GetProperties();//返回PropertyInfo类型,用于取得该类的属性的信息

            //生成SQL语句
            string values = "";//values( 之后 最后一起拼装起来
            string propertyName = "";//属性名
            string propertyValue = "";//属性值

            sql_ = operation + " " + tableName + " ( ";

            int inputCount = 0;//用于计数新增
            for (int i = 0; i < propertyList.Length; i++)//这个从Entity第一个属性开始就解析,主要因为添加时候只要主属性不是自增的就需要填写
            {
                //propertyList.Add("");
                propertyName = propertyList[i].Name;
                propertyValue = GetObjectPropertyValue(type, baseEntity, propertyName);//获取属性值
                if (propertyValue != null)
                {
                    if (inputCount != 0)
                    {
                        sql_ += " , ";
                        values += " , ";
                    }
                    sql_ += "["+propertyName+"]";

                    values += " N'{0}' ";
                    values = string.Format(values, propertyValue);
                    inputCount++;
                }

            }
            sql_ = sql_ + ") output inserted.{0} values(" + values + ")";

            sql_ = string.Format(sql_, propertyList[0].Name);
                 
            OpenDb();
            SqlCommand cm = new SqlCommand(sql_, conn);
            //ulong returnId = cm.ExecuteNonQuery();
            string returnId =cm.ExecuteScalar().ToString();
            cm.Dispose();
            cm = null;
            CloseDb();
            return returnId;
        }
        catch (Exception e)
        {
            throw new Exception(e.ToString() + "  " + sql_);
        }

    }
    #endregion

相关内容

热门资讯

央行公开市场净回笼1745亿元 8月26日消息,央行今日开展4058亿元7天逆回购操作,操作利率为1.40%,与此前持平。因今日有5...
碳交易板块竞价活跃,岳阳林纸等... 8月26日消息,碳交易板块竞价活跃,岳阳林纸、雪迪龙、百川畅银、湖南发展等多股高开超5%,国网英大、...
游戏板块活跃,三七互娱触及涨停 8月26日消息,游戏板块活跃,三七互娱触及涨停,冰川网络、巨人网络、完美世界、吉比特跟涨。消息面上,...
北京发布山洪黄色预警 8月26日消息,北京市水务局与市气象局2025年8月26日9时联合发布山洪灾害黄色预警:预计26日2...
时空大数据概念股持续走高,君逸... 8月26日消息,时空大数据概念股持续走高,君逸数码、中电鑫龙涨停,航天宏图、天润科技、朗科科技涨超1...
新场镇桐林社区开展“桐林乡韵・... 2026年4月8日,由大邑县民政局、大邑县公益慈善服务中心、新场镇桐林社区居民委员会联合主办,大邑县...
江西省启动“为民爱民·救在赣鄱... 近日,江西省民政厅印发《江西省“为民爱民·救在赣鄱”救助管理工作品牌建设年活动方案》,在全省部署开展...
生态答卷获“鸟选”!崖沙燕时隔... 近日,一群珍贵的崖沙燕来到许昌市襄城县双庙乡“安家”。崖沙燕,是国家“三有”保护动物,它们对栖息地环...
主官抓环保|丹阳市领导带队推进... 4月7日下午,丹阳市市长宋飞雄带队深入一线,现场推进大气环境治理工作,破解工作难题、部署重点任务。市...
轮台县阳霞镇:爱心农资送上门 ... 四月春风暖,春耕正当时。近日,新疆轮台县阳霞镇塔拉布拉克村处处洋溢着温暖的气息,在阳霞镇党委、政府的...