public T InsertT <T>(string tableName, BeeDataAdapter dataAdapter, bool removeIdentity) { ThrowExceptionUtil.ArgumentNotNullOrEmpty(tableName, "tableName"); ThrowExceptionUtil.ArgumentNotNull(dataAdapter, "dataAdapter"); if (removeIdentity) { TableSchema tableSchema = GetTableSchema(tableName); ThrowExceptionUtil.ArgumentConditionTrue(tableSchema != null, "tableName", "can not find table. Name:{0}".FormatWith(tableName)); if (tableSchema.IdentityColumn != null) { dataAdapter.RemoveKey(tableSchema.IdentityColumn.ColumnName); } else { dataAdapter.RemoveKey(Constants.DefaultIdentityColumnName); } } T result = default(T); InsertBeeCommand insertBeeCommand = new InsertBeeCommand(this, tableName, dataAdapter, Constants.DefaultIdentityColumnName); result = insertBeeCommand.Excute <T>(); return(result); }
/// <summary> /// 保存数据。 /// 默认的表名就是类名, 若T类型上有指定的表名,则以此为准 /// 默认的自增列为Id,若T类型上有指定的自增列, 则以此为准。 /// 若value中的标识列大于0, 则修改。 若小于等于0, 则新增。 /// 注:主键为int /// </summary> /// <typeparam name="T">类型</typeparam> /// <param name="value">类型值</param> /// <returns>新增则返回自增列, 修改则返回本身标示列值。</returns> public int Save <T>(T value) where T : class { ThrowExceptionUtil.ArgumentNotNull(value, "value"); string identityColumnName = OrmUtil.GetIdentityColumnName <T>(); string tableName = OrmUtil.GetTableName <T>(); EntityProxy <T> entityProxy = EntityProxyManager.Instance.GetEntityProxy <T>(); object identity = entityProxy.GetPropertyValue(value, identityColumnName); ThrowExceptionUtil.ArgumentConditionTrue(identity != null, string.Empty, "未指定主键列"); if ((int)identity <= 0) { return(Insert <T>(value)); } else { BeeDataAdapter dataAdapter = BeeDataAdapter.From <T>(value); dataAdapter.RemoveKey(identityColumnName); Update(tableName, dataAdapter, SqlCriteria.New.Equal(identityColumnName, identity)); return((int)identity); } }
protected string RenderHtml(string controller, string action, BeeDataAdapter dataAdapter) { string result = string.Empty; using (MemoryStream memoryStream = new MemoryStream()) { using (StreamWriter streamWriter = new StreamWriter(memoryStream, Encoding.UTF8)) { HttpWorkerRequest wr = new System.Web.Hosting.SimpleWorkerRequest("index.htm", string.Empty, streamWriter); HttpContext httpContext = new HttpContext(wr); httpContext.Response.ContentEncoding = Encoding.Default; MvcDispatcher.ExecuteAction(httpContext, controller, action, dataAdapter); httpContext.Response.Flush(); streamWriter.Flush(); memoryStream.Position = 0; //using (StreamReader reader = new StreamReader(memoryStream, Encoding.UTF8)) //{ // result = reader.ReadToEnd(); //} result = Encoding.UTF8.GetString(memoryStream.ToArray()); } } return(result); }
public ActionExecutingArgs(string controllerName, string actionName, BeeDataAdapter dataAdapter) { ControllerName = controllerName; ActionName = actionName; Data = dataAdapter; Result = ActionExecutingResult.OK; }
/// <summary> /// 转换辅助类。 mapping暂未使用 /// </summary> /// <param name="type"></param> /// <param name="dataAdapter"></param> /// <param name="mapping"></param> /// <returns></returns> private static object ConvertDataToObject(Type type, BeeDataAdapter dataAdapter, Dictionary <string, string> mapping) { ThrowExceptionUtil.ArgumentNotNull(type, "type"); ThrowExceptionUtil.ArgumentNotNull(dataAdapter, "dataAdapter"); object result = ReflectionUtil.CreateInstance(type); if (result != null) { IEntityProxy entityProxy = EntityProxyManager.Instance.GetEntityProxyFromType(type); foreach (string key in dataAdapter.Keys) { string value = dataAdapter[key] as string; if (value != null && value.Length == 0) { /// 空字符串并且目标类型不是字符型则不转换 PropertySchema schema = entityProxy[key]; if (schema != null && schema.PropertyType != typeof(string)) { continue; } } entityProxy.SetPropertyValue(result, key, dataAdapter[key]); } } return(result); }
/// <summary> /// Provided for common clone for the object. /// the object should be a class. /// </summary> /// <typeparam name="T">the type of the object</typeparam> /// <param name="value">the instance of the type.</param> /// <returns>the cloned instance.</returns> public static T CommonClone <T>(object value) where T : class { ThrowExceptionUtil.ArgumentNotNull(value, "value"); BeeDataAdapter dataAdapter = BeeDataAdapter.From(value); return(ConvertDataToObject <T>(dataAdapter)); }
protected virtual void ActionError(string controllerName, string actionName, BeeDataAdapter dataAdapter, Exception innerException) { BeeMvcResult mvcResult = new BeeMvcResult(); mvcResult.code = 400; mvcResult.msg = innerException.Message; var httpException = innerException as HttpException; if (httpException != null) { mvcResult.code = httpException.GetHttpCode(); } var coreException = innerException as CoreException; if (coreException != null) { mvcResult.code = 405; } Logger.Error("Invoke {0}.{1} error.\r\n{2}".FormatWith(controllerName, actionName, dataAdapter), innerException); WriteMvcResult(HttpContextUtil.CurrentHttpContext, mvcResult); }
protected override BeeDataAdapter GetRouteData(HttpContext context) { BeeDataAdapter result = new BeeDataAdapter(); RouteValueDictionary routeData = RequestContext.RouteData.Values; foreach (string item in routeData.Keys) { if (string.Compare("controller", item, true) == 0) { result.Add(Constants.BeeControllerName, routeData[item]); } else if (string.Compare("action", item, true) == 0) { result.Add(Constants.BeeActionName, routeData[item]); } else if (string.Compare("area", item, true) == 0) { result.Add(Constants.BeeAreaName, routeData[item]); } else { result.Add(item, routeData[item]); } } return(result); }
internal void Init(HttpContext httpContext, ControllerInfo controllerInfo, BeeDataAdapter viewData, string actionName) { this.httpContext = httpContext; Init(controllerInfo, viewData); this.currentActionName = actionName; }
public void Check(BeeDataAdapter dataAdapter) { WeiXinInvokeTree invokeTree = FindCurrentInvoke(dataAdapter); if (invokeTree == null) { } else { if (!string.IsNullOrEmpty(invokeTree.AContent)) { dataAdapter[Constants.BeeActionName] = "InvokeTreeText"; dataAdapter["acontent"] = System.Web.HttpUtility.HtmlDecode(invokeTree.AContent); } else if (!string.IsNullOrEmpty(invokeTree.BContent)) { dataAdapter[Constants.BeeActionName] = "InvokeTreeArticle"; dataAdapter["bcontent"] = System.Web.HttpUtility.HtmlDecode(invokeTree.BContent); } else { if (!string.IsNullOrEmpty(invokeTree.ControllerName) && !string.IsNullOrEmpty(invokeTree.ActionName)) { dataAdapter[Constants.BeeControllerName] = invokeTree.ControllerName; dataAdapter[Constants.BeeActionName] = invokeTree.ActionName; } } if (!invokeTree.RemainFlag) { InvokeContextManager.Instance.CurrentContext(dataAdapter["fromusername"].ToString()).MessageStack.Pop(); } } }
/// <summary> /// Init the parameter of the pagination. include pagenum, pagesize, recordcount, orderfield, orderdirection. /// </summary> /// <param name="dataAdapter">the data.</param> protected virtual void InitPagePara(BeeDataAdapter dataAdapter) { ViewData.TryGetValue <int>("pagenum", 1, true); ViewData.TryGetValue <int>("pagesize", 20, true); ViewData.TryGetValue <int>("recordcount", 0, true); ViewData.TryGetValue <string>("orderField", "id", true); ViewData.TryGetValue <string>("orderDirection", "desc", true); }
/// <summary> /// 调用存储过程。 /// 一般不推荐返回值, 直接将该信息反映在结果集中更好。 /// </summary> /// <param name="spName">存储过程名</param> /// <param name="dataAdapter">数据集</param> /// <returns>返回结果集</returns> public DataTable CallSP(string spName, BeeDataAdapter dataAdapter) { ThrowExceptionUtil.ArgumentNotNullOrEmpty(spName, "spName"); SPBeeCommand spBeeCommand = new SPBeeCommand(this, spName, dataAdapter); return(spBeeCommand.Excute <DataTable>()); }
/// <summary> /// sql文查询 /// </summary> /// <param name="cmdText">sql文</param> /// <param name="dataAdapter">数据集</param> /// <returns>结果集</returns> public DataTable ExecuteCommand(string cmdText, BeeDataAdapter dataAdapter) { ThrowExceptionUtil.ArgumentNotNullOrEmpty(cmdText, "cmdText"); CmdTextBeeCommand cmdTextBeeCommand = new CmdTextBeeCommand(this, cmdText, dataAdapter); return(cmdTextBeeCommand.Excute <DataTable>()); }
public object Test() { var data = BeeDataAdapter.New.Add("test", 1).Add("test2", DateTime.Now).Add("test3", 0.5533d).Add("test4", Guid.NewGuid()).Add("test5", null); var data2 = BeeDataAdapter.New.Merge(data, true).Add("test6", data); var json = SerializeUtil.ToJson(data2); return(BeeDataAdapter.From(json)); }
// Methods public InsertBeeCommand(DbSession owner, string tableName, BeeDataAdapter dataAdapter, string identityColumnName) : base(owner, BeeDbCommandBehavior.NoQuery) { this.tableName = tableName; this.dataAdapter = dataAdapter; this.identityColumnName = identityColumnName; }
public override void Delete(int id) { using (DbSession dbSession = GetDbSession()) { BeeDataAdapter data = new BeeDataAdapter(); data["delflag"] = true; dbSession.Update("WeiXinArticle", data, SqlCriteria.New.Equal("id", id)); } }
public IEnumerable <T> ExecuteDataReader <T>(string cmdText, BeeDataAdapter dataAdapter) where T : class { ThrowExceptionUtil.ArgumentNotNullOrEmpty(cmdText, "cmdText"); CmdTextBeeCommand cmdTextBeeCommand = new CmdTextBeeCommand(this, cmdText, dataAdapter); return(cmdTextBeeCommand.DataRead <T>()); }
// Methods public UpdateBeeCommand(DbSession owner, string tableName, BeeDataAdapter data, SqlCriteria sqlCriteria) : base(owner, BeeDbCommandBehavior.NoQuery) { ThrowExceptionUtil.ArgumentNotNullOrEmpty(tableName, "tableName"); ThrowExceptionUtil.ArgumentConditionTrue(data != null && data.Count != 0, "data", "data should not be null or empty."); this.tableName = tableName; this.dataAdapter = data; this.sqlCriteria = sqlCriteria; }
/// <summary> /// 更新数据 /// </summary> /// <param name="tableName">表名</param> /// <param name="dataAdapter">数据集</param> /// <param name="sqlCriteria">条件集</param> public void Update(string tableName, BeeDataAdapter dataAdapter, SqlCriteria sqlCriteria) { ThrowExceptionUtil.ArgumentNotNullOrEmpty(tableName, "tableName"); ThrowExceptionUtil.ArgumentNotNull(dataAdapter, "dataAdapter"); UpdateBeeCommand updateBeeCommand = new UpdateBeeCommand(this, tableName, dataAdapter, sqlCriteria); updateBeeCommand.Excute <int>(); }
internal void Init(ControllerInfo controllerInfo, BeeDataAdapter viewData) { this.controllerInfo = controllerInfo; this.dataAdapter = viewData; if (Inited != null) { Inited(this, null); } }
public override PageResult Index(BeeDataAdapter dataAdapter) { DataTable result; using (DbSession dbSession = GetDbSession()) { result = dbSession.Query(TableName, null); } return(View("Index", result)); }
public SocketConnection(ISocket socket) { Socket = socket; OnOpen = () => { }; OnClose = () => { }; OnError = x => { }; OnMessage = x => { }; OnBinary = x => { }; Session = new BeeDataAdapter(); }
/// <summary> /// sql文查询 /// </summary> /// <param name="cmdText">sql文</param> /// <param name="dataAdapter">数据集</param> /// <returns>结果集</returns> public List <T> ExecuteCommand <T>(string cmdText, BeeDataAdapter dataAdapter) { List <T> list = new List <T>(); DataTable dataTable = ExecuteCommand(cmdText, dataAdapter); if (dataTable != null) { list = ConvertUtil.ConvertDataToObject <T>(dataTable); } return(list); }
/// <summary> /// 调用存储过程。 /// 一般不推荐返回值, 直接将该信息反映在结果集中更好。 /// </summary> /// <param name="spName">存储过程名</param> /// <param name="dataAdapter">数据集</param> /// <returns>返回结果集</returns> public List <T> CallSP <T>(string spName, BeeDataAdapter dataAdapter) { List <T> list = new List <T>(); DataTable dataTable = CallSP(spName, dataAdapter); if (dataTable != null) { list = ConvertUtil.ConvertDataToObject <T>(dataTable); } return(list); }
public void RenderAction(string controller, string action, params string[] data) { BeeDataAdapter dataAdapter = new BeeDataAdapter(); foreach (string item in data) { Match match = ExAttributeRegex.Match(item); if (match.Success) { dataAdapter[match.Groups["name"].Value] = match.Groups["value"].Value; } } MvcDispatcher.ExecuteAction(controller, action, dataAdapter); }
/// <summary> /// Provided to fomat string using the razor format. /// </summary> /// <param name="format">string format</param> /// <param name="obj">the instance.</param> /// <returns>the converted string.</returns> public static string RazorFormat(this string format, object obj) { ThrowExceptionUtil.ArgumentNotNull(format, "format"); ThrowExceptionUtil.ArgumentNotNull(obj, "obj"); string result = string.Empty; List <string> propertyList = new List <string>(); Match match = FormatRegex.Match(format); while (match.Success) { propertyList.Add(match.Groups["name"].Value); match = match.NextMatch(); } result = format; if (obj is DataRow) { DataRow rowItem = obj as DataRow; foreach (string item in propertyList) { if (rowItem.Table.Columns.Contains(item)) { result = result.Replace("@" + item, rowItem[item].ToString()); } } } else if (obj is BeeDataAdapter) { BeeDataAdapter dataAdapter = obj as BeeDataAdapter; foreach (string item in propertyList) { result = result.Replace("@" + item, dataAdapter.Format(item)); } } else { IEntityProxy entityProxy = EntityProxyManager.Instance.GetEntityProxyFromType(obj.GetType()); foreach (string item in propertyList) { object propertyValue = entityProxy.GetPropertyValue(obj, item); result = result.Replace("@" + item, propertyValue == null ? string.Empty : propertyValue.ToString()); } } return(result); }
private void Init(BeeDataAdapter dataAdapter) { StringBuilder columnClauseBuilder = new StringBuilder(); StringBuilder parameterClauseBuilder = new StringBuilder(); StringBuilder updateClauseBuilder = new StringBuilder(); if (dataAdapter != null && dataAdapter.Count > 0) { int index = 0; foreach (string fieldName in dataAdapter.Keys) { index++; string columnName = owner.DbDriver.FormatField(fieldName); string parameterName = string.Format("{0}{1}", owner.DbDriver.ParameterPrefix, fieldName); columnClauseBuilder.Append(columnName); parameterClauseBuilder.Append(parameterName); updateClauseBuilder.Append(columnName).Append("=").Append(parameterName); columnClauseBuilder.Append(","); parameterClauseBuilder.Append(","); updateClauseBuilder.Append(","); DbParameter parameter = owner.DbDriver.CreateParameter(); parameter.ParameterName = fieldName; parameter.Value = dataAdapter[fieldName]; if (parameter.Value is DateTime) { parameter.DbType = System.Data.DbType.DateTime; } else { // to do nothing } if (parameter != null) { this.dbParameterList.Add(parameter); } } columnClauseBuilder.Remove(columnClauseBuilder.Length - 1, 1); parameterClauseBuilder.Remove(parameterClauseBuilder.Length - 1, 1); updateClauseBuilder.Remove(updateClauseBuilder.Length - 1, 1); } this.parameterClause = parameterClauseBuilder.ToString(); this.columnClause = columnClauseBuilder.ToString(); this.updateClause = updateClauseBuilder.ToString(); }
internal static CheckMethodResult GetEntityMethodName(Type type, string methodName, BeeDataAdapter dataAdapter) { ThrowExceptionUtil.ArgumentNotNull(type, "type"); ThrowExceptionUtil.ArgumentNotNullOrEmpty(methodName, "methodName"); if (dataAdapter == null) { dataAdapter = new BeeDataAdapter(); } CheckMethodResult result = new CheckMethodResult(); MethodSchema methodSchema = null; List <MethodSchema> list = null; //lock (lockobject) { // 保证参数长的先被匹配 // 该方法本身就排过序了 list = EntityProxyManager.Instance.GetEntityMethods(type); foreach (MethodSchema item in list) { // Check the name of the method. if (string.Compare(item.Name, methodName, true) == 0) { if (CheckMethod(item, methodName, dataAdapter, out result.DataAdapter)) { methodSchema = item; break; } } } } if (methodSchema != null) { result.MethodName = methodSchema.MemberInfo.ToString(); } else { CoreException exception = new CoreException("Can not match a method for {0}.{1}\r\n".FormatWith(type.Name, methodName)); exception.ErrorCode = ErrorCode.MVCNoAction; throw exception; } return(result); }
private static BeeDataAdapter GetHeaderItem(PropertySchema propertySchema) { ModelPropertyAttribute modelPropertyAttribute = propertySchema.GetCustomerAttribute <ModelPropertyAttribute>(); BeeDataAdapter dataAdapter = new BeeDataAdapter(); string descriptionInfo; if (modelPropertyAttribute != null) { if (!modelPropertyAttribute.Visible) { return(null); } descriptionInfo = modelPropertyAttribute.Description; if (string.IsNullOrEmpty(descriptionInfo)) { descriptionInfo = propertySchema.Name; } dataAdapter.Add("description", descriptionInfo); dataAdapter.Add("name", propertySchema.Name); if (modelPropertyAttribute.ColumnWidth != 0) { dataAdapter.Add("width", modelPropertyAttribute.ColumnWidth.ToString()); } if (!string.IsNullOrEmpty(modelPropertyAttribute.Align)) { dataAdapter.Add("align", modelPropertyAttribute.Align); } if (modelPropertyAttribute.OrderableFlag) { dataAdapter.Add("orderField", propertySchema.Name); } } else { dataAdapter.Add("description", propertySchema.Name); dataAdapter.Add("Name", propertySchema.Name); } return(dataAdapter); }
public virtual PageResult Show(int id) { BeeDataAdapter dataAdapter = new BeeDataAdapter(); if (id >= 0) { using (DbSession dbSession = GetDbSession()) { T result = dbSession.Query <T>(SqlCriteria.New.Equal(OrmUtil.GetIdentityColumnName <T>(), id)).FirstOrDefault(); dataAdapter = BeeDataAdapter.From <T>(result); } } ViewData.Merge(dataAdapter, true); return(View("BeeAutoShow")); }