.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

相关内容

热门资讯

STOXX欧洲600指数跌幅扩... 8月27日,STOXX欧洲600指数跌幅扩大至0.5%,触及盘中低点。(科股宝播报)
湖北:力争到2030年全面建成... 8月27日,湖北省人民政府办公厅印发《湖北省实施多式联运攻坚 打通堵点卡点实施方案(2026—203...
上半年亏损金额接近去年全年,尚... 8月26日,尚品宅配(300616.SZ)发布了2026年半年度报告。数据显示,其上半年实现营业收入...
徽酒一哥的慢与稳:报表出清后,... 作者 | 光年来源 | 商业光年不久前,古井贡酒同步披露2025年年报与2026年一季报。两份报表放...
一连串利好,一个新中心浮出水面... 01风口上的龙华深圳城市中心十年一变,这次聚光灯稳稳打在了龙华身上。利好密集兑现,龙华的破局之势已势...
透视半年报丨绿城中国:保持稳定... 当2026年的房地产行业仍在持续磨底之际,绿城中国于8月25日交出的这份中期答卷,显露出财务底色的从...
紫燕食品:2026年上半年营业... 8月27日,紫燕食品(603057.SH)公告称,公司发布2026年半年度报告,实现营业收入16.6...
粤万年青:控股子公司签署12.... 8月27日,粤万年青(301111.SZ)公告称,公司控股子公司万宏智算与A公司签署《服务采购协议》...
*ST福成:2026年上半年净... 8月27日,*ST福成公告,2026年上半年营业收入5.69亿元,同比增长6.88%;归属于上市公司...
净利润暴增760%背后:健合国... 健合(H&H)国际控股(1112.HK)交出了一份数字上颇为亮眼的中期成绩单:截至2026年6月30...