.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

相关内容

热门资讯

一上市公司公告:36岁独董不幸... 2026.07.10本文字数:882,阅读时长大约1分钟来源 |极目新闻综合报道7月9日,红塔证券(...
10天、3000元、一个人:一... 本文来自微信公众号: AI时代我的人生下半场 ,作者:席春迎博士,原文标题:《10天、3000元、一...
下周一,复牌!5倍大牛股,突发... 半导体大牛股有新动作!7月10日晚间,拓荆科技(688072)公告,公司拟收购无锡尚积半导体(简称“...
成立14年首度举牌,富德产险跃... 出品|达摩财经近日,富德财产保险股份有限公司(下称“富德产险”)发布举牌公告表示,公司与一致行动人深...
兆易创新净利暴增10倍,光炒股... 出品|达摩财经自去年以来,存储芯片供应持续趋紧,行业景气度一直维持高位,存储芯片龙头兆易创新(603...
科技股大跌,反而让我更加确认一... 近几个交易日的科技板块,用“翻脸比翻书还快”来形容毫不夸张。昨天半导体和CPO板块还集体拉升,不少投...
今夜,十倍预增扎堆! 今夜,十... 7月10日晚间,A股上市公司2026年上半年业绩预告披露持续火热,其中多家锂业上下游公司均披露了亮眼...
美股芯片股走势分化,闪迪拉升转... 7月10日盘中,美股三大指数走势互异,截至23:00, 道指涨0.1 % , 纳指、标普500指数均...
徐克再到医院探望施南生 透露前... 搜狐娱乐讯 据港媒,徐克导演于今日(10日)下午1时36分被目击离开医院。他戴着鸭舌帽及口罩,被问到...
北京市气象局:10日夜间至11... 7月10日消息,根据北京市气象局最新预报,7月10日夜间至11日夜间,北京有暴雨、局地大暴雨,降雨过...