private static void AddParam(IDatabase db, string sql, object obj) { string _sql = sql; db.ClearParameters(); if (obj != null) { var t = obj.GetType(); if (t == typeof(Dictionary <string, object>)) { var dic = obj as Dictionary <string, object>; foreach (KeyValuePair <string, object> kv in dic) { string s = kv.Key.TrimStart('@'); string paramname = "@" + s; if (_sql.Contains(paramname)) { var pname = db.EncodeParameterName(s); if (paramname != pname) { _sql = _sql.Replace(paramname, pname); } var v = kv.Value; db.AddParameter(pname, v); } } } else if (t.IsClass && !t.Name.StartsWith("<>")) { IModelToParam toparam = GetModelToParam(t); _sql = toparam.To(db, _sql, obj); } else { IModelToParam toparam = new ModelToParam(); _sql = toparam.To(db, _sql, obj); } } db.CommandText = _sql; }
private static IModelToParam GetModelToParam(Type t) { IModelToParam setParam = null; Type setParamType = null; if (!setParamDic.TryGetValue(t, out setParamType)) { if (setParamType == null) { setParamType = CreateModelToParamType(t); if (setParamType != null && !setParamDic.ContainsKey(t)) { setParamDic[t] = setParamType; } } } if (setParamType != null) { setParam = Activator.CreateInstance(setParamType) as IModelToParam; } return(setParam); }