Exemplo n.º 1
0
        /// <summary>
        /// 修改一个实例
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="entity">实体</param>
        /// <returns>影响行数</returns>
        public static int Update <T>(T entity)
        {
            var type       = typeof(T);
            var properties = type.GetProperties().Where(p => !GetAttributes(p).OfType <NonFieldAttribute>().Any());
            ParameterizedQueryBuilder parms  = new ParameterizedQueryBuilder();
            StringBuilder             strSql = new StringBuilder();

            strSql.Append("Update " + type.Name + " set ");
            string fields       = "";
            string primarykey   = "";
            string primaryvalue = "";
            int    loop         = 0;

            foreach (var p in properties)
            {
                var name = GetFieldname(p);
                if (name.IndexOf("OID") == -1)
                {
                    fields += name + "={" + loop + "},";
                    parms.AppendParameter(p.GetValue(entity, null));
                    loop++;
                }
                else
                {
                    primarykey   = name;
                    primaryvalue = p.GetValue(entity, null).ToString();
                }
            }
            strSql.Append(fields.Substring(0, fields.Length - 1) + " where " + primarykey + "=" + primaryvalue);
            return(db.T(strSql.ToString(), parms.CreateQuery().ParameterValues).ExecuteNonQuery());
        }
Exemplo n.º 2
0
        /// <summary>
        /// 得到Model组成SQL对象
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="entity">实体</param>
        /// <returns>Model组成SQL对象</returns>
        public static TModel GetInsertTModel <T>(T entity)
        {
            TModel tmodel     = new TModel();
            var    type       = typeof(T);
            var    properties = type.GetProperties().Where(p => !GetAttributes(p).OfType <NonFieldAttribute>().Any());
            ParameterizedQueryBuilder parms  = new ParameterizedQueryBuilder();
            StringBuilder             strSql = new StringBuilder();

            strSql.Append("insert into " + type.Name + "(");
            string fields = "";

            foreach (var p in properties)
            {
                var name = GetFieldname(p);
                if (name.IndexOf("NOID") == -1)
                {
                    fields += name + ",";
                    parms.AppendParameter(p.GetValue(entity, null));
                }
            }
            strSql.Append(fields.Substring(0, fields.Length - 1) + ") values({...});select @@IDENTITY");
            tmodel.SQL             = strSql.ToString();
            tmodel.ParameterValues = parms.CreateQuery().ParameterValues;

            return(tmodel);
        }
Exemplo n.º 3
0
        private static void AddParameter(ParameterizedQueryBuilder builder, object value)
        {
            var partial = value as IParameterizedQueryPartial;

            if (partial == null)
            {
                var container = value as IDbQueryContainer;
                if (container != null)
                {
                    partial = container.Query as IParameterizedQueryPartial;
                }
            }

            if (partial != null)
            {
                partial.AppendTo(builder);
                return;
            }


            var array = value as Array;

            if (array != null)
            {
                if (array.Length == 0)
                {
                    return;
                }


                for (int i = 0; i < array.Length - 1; i++)
                {
                    AddParameter(builder, array.GetValue(i));
                    builder.AppendText(",");
                }

                AddParameter(builder, array.GetValue(array.Length - 1));
                return;
            }


            builder.AppendParameter(value);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 插入多个实例
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="entity">实体</param>
        /// <returns>影响行数</returns>
        public static int Insert <T>(List <T> entitys)
        {
            var type       = typeof(T);
            var properties = type.GetProperties().Where(p => !GetAttributes(p).OfType <NonFieldAttribute>().Any());
            int res        = 0;

            try
            {
                using (var tran = db.BeginTransaction())
                {
                    foreach (T entity in entitys)
                    {
                        ParameterizedQueryBuilder parms  = new ParameterizedQueryBuilder();
                        StringBuilder             strSql = new StringBuilder();
                        strSql.Append("insert into " + type.Name + "(");
                        string fields = "";
                        foreach (var p in properties)
                        {
                            var name = GetFieldname(p);
                            if (name.IndexOf("NOID") == -1)
                            {
                                fields += name + ",";
                                parms.AppendParameter(p.GetValue(entity, null));
                            }
                        }
                        strSql.Append(fields.Substring(0, fields.Length - 1) + ") values({...})");
                        res += tran.T(strSql.ToString(), parms.CreateQuery().ParameterValues).ExecuteNonQuery();
                    }
                    tran.Commit();
                }
            }
            catch
            {
                res = 0;
            }
            return(res);
        }