<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      簡易orm 主要是為了舊平臺查詢方便

      直接新建個文件即可

      ExLogic.cs
      	public class ExLogic
      	{
      
      
      		public static int Execute(string sqlCommand, string dbConnection = "WebDb")
      		{
      			Database db = DatabaseFactory.CreateDatabase(dbConnection);
      			DbCommand dbCommand = db.GetSqlStringCommand(sqlCommand);
      			try
      			{
      				return Convert.ToInt32(db.ExecuteScalar(dbCommand));
      			}
      			catch (Exception ex)
      			{
      				Logging.WriteLog(ex);
      				throw ex;
      			}
      
      		}
      
      
      
      		/// <summary>
      		/// 獲取對象
      		/// </summary>
      		/// <typeparam name="T">對象</typeparam>
      		/// <param name="where">非必填</param>
      		/// <returns></returns>
      		public static T Get<T>(Expression<Func<T, bool>> where = null, string dbConnection = "WebDb") where T : class, new()
      		{
      			var whereSql = LambdaToSqlHelper.GetWhereSql(where);
      
      			Database db = DatabaseFactory.CreateDatabase(dbConnection);
      			string sqlCommand = $"SELECT * FROM {typeof(T).Name} WHERE " + (where == null ? "1==1" : whereSql);
      			DbCommand dbCommand = db.GetSqlStringCommand(sqlCommand);
      			try
      			{
      				var res = new T();
      				using (IDataReader dr = db.ExecuteReader(dbCommand))
      				{
      					if (dr.Read())
      					{
      						var typeoft = typeof(T);
      						var proper = typeoft.GetProperties();
      						foreach (var item in proper)
      						{
      							if (item.PropertyType == typeof(int))
      								item.SetValue(res, DataReaderHelper.GetInt32(dr, item.Name), null);
      							else if (item.PropertyType == typeof(long))
      								item.SetValue(res, DataReaderHelper.GetInt64(dr, item.Name), null);
      							else if (item.PropertyType == typeof(string))
      								item.SetValue(res, DataReaderHelper.GetString(dr, item.Name), null);
      							else if (item.PropertyType == typeof(bool))
      								item.SetValue(res, DataReaderHelper.GetBoolean(dr, item.Name), null);
      							else if (item.PropertyType == typeof(decimal))
      								item.SetValue(res, DataReaderHelper.GetDecimal(dr, item.Name), null);
      							else if (item.PropertyType == typeof(double))
      								item.SetValue(res, DataReaderHelper.GetDouble(dr, item.Name), null);
      							else if (item.PropertyType == typeof(DateTime))
      								item.SetValue(res, DataReaderHelper.GetDateTime(dr, item.Name), null);
      						}
      					}
      				}
      				return res;
      			}
      			catch (Exception ex)
      			{
      				throw;
      			}
      		}
      
      
      		  
      
      
      
      	}
      
      /// <summary>
      		/// 這部分代碼網上可找,自行百度 ,我有稍作修改
      		/// </summary>
      	public static class LambdaToSqlHelper
      	{
      
      
      		#region 基礎方法
      
      		#region 獲取條件語句方法
      
      		public static string GetWhereSql<T>(Expression<Func<T, bool>> func) where T : class
      		{
      			string res;
      			if (func.Body is BinaryExpression)
      			{
      				//起始參數
      
      				BinaryExpression be = ((BinaryExpression)func.Body);
      				res = BinarExpressionProvider(be.Left, be.Right, be.NodeType);
      			}
      			else if (func.Body is MethodCallExpression)
      			{
      				MethodCallExpression be = ((MethodCallExpression)func.Body);
      				res = ExpressionRouter(func.Body);
      			}
      			else
      			{
      				res = " ";
      			}
      
      			return res;
      		}
      
      		#endregion 獲取條件語句方法
      
      
      
      		#region 獲取排序語句 order by
      
      		public static string GetOrderSql<T>(Expression<Func<T, object>> exp) where T : class
      		{
      			var res = "";
      			if (exp.Body is UnaryExpression)
      			{
      				UnaryExpression ue = ((UnaryExpression)exp.Body);
      				res = "order by `" + ExpressionRouter(ue.Operand).ToLower() + "`";
      			}
      			else
      			{
      				MemberExpression order = ((MemberExpression)exp.Body);
      				res = "order by `" + order.Member.Name.ToLower() + "`";
      			}
      			return res;
      		}
      
      		#endregion 獲取排序語句 order by
      
      
      
      		#endregion 基礎方法
      
      		#region 底層
      
      		public static bool In<T>(this T obj, T[] array)
      		{
      			return true;
      		}
      
      		public static bool NotIn<T>(this T obj, T[] array)
      		{
      			return true;
      		}
      
      		public static bool Like(this string str, string likeStr)
      		{
      			return true;
      		}
      
      		public static bool NotLike(this string str, string likeStr)
      		{
      			return true;
      		}
      
      		private static string GetValueStringByType(object oj)
      		{
      			if (oj == null)
      			{
      				return "null";
      			}
      			else if (oj is ValueType)
      			{
      				return oj.ToString();
      			}
      			else if (oj is string || oj is DateTime || oj is char)
      			{
      				return string.Format("'{0}'", oj.ToString());
      			}
      			else
      			{
      				return string.Format("'{0}'", oj.ToString());
      			}
      		}
      
      		private static string BinarExpressionProvider(Expression left, Expression right, ExpressionType type)
      		{
      			var sb = string.Empty;
      			//先處理左邊
      			string reLeftStr = ExpressionRouter(left);
      			sb += reLeftStr;
      
      			sb += ExpressionTypeCast(type);
      
      			//再處理右邊
      			string tmpStr = ExpressionRouter(right);
      			if (tmpStr == "null")
      			{
      				if (sb.EndsWith(" ="))
      				{
      					sb = sb.Substring(0, sb.Length - 2) + " is null";
      				}
      				else if (sb.EndsWith("<>"))
      				{
      					sb = sb.Substring(0, sb.Length - 2) + " is not null";
      				}
      			}
      			else
      			{
      				//添加參數
      				sb += tmpStr;
      			}
      
      			return sb;
      		}
      
      		private static string ExpressionRouter(Expression exp)
      		{
      			string sb = string.Empty;
      
      			if (exp is BinaryExpression)
      			{
      				BinaryExpression be = ((BinaryExpression)exp);
      				return BinarExpressionProvider(be.Left, be.Right, be.NodeType);
      			}
      			else if (exp is MemberExpression)
      			{
      				MemberExpression me = ((MemberExpression)exp);
      				if (!exp.ToString().StartsWith("value"))
      				{
      					return me.Member.Name;
      				}
      				else
      				{
      					var result = Expression.Lambda(exp).Compile().DynamicInvoke();
      					if (result == null)
      					{
      						return "null";
      					}
      					else
      					{
      						return result.ToString();
      					}
      				}
      			}
      			else if (exp is NewArrayExpression)
      			{
      				NewArrayExpression ae = ((NewArrayExpression)exp);
      				StringBuilder tmpstr = new StringBuilder();
      				foreach (Expression ex in ae.Expressions)
      				{
      					tmpstr.Append(ExpressionRouter(ex));
      					tmpstr.Append(",");
      				}
      				//添加參數
      
      				return tmpstr.ToString(0, tmpstr.Length - 1);
      			}
      			else if (exp is MethodCallExpression)
      			{
      				MethodCallExpression mce = (MethodCallExpression)exp;
      				string par = ExpressionRouter(mce.Arguments[0]);
      				if (mce.Method.Name == "Like")
      				{
      					//添加參數用
      					return string.Format("({0} like {1})", par, ExpressionRouter(mce.Arguments[1]));
      				}
      				else if (mce.Method.Name == "NotLike")
      				{
      					//添加參數用
      					return string.Format("({0} Not like {1})", par, ExpressionRouter(mce.Arguments[1]));
      				}
      				else if (mce.Method.Name == "In")
      				{
      					//添加參數用
      					return string.Format("{0} In ({1})", par, ExpressionRouter(mce.Arguments[1]));
      				}
      				else if (mce.Method.Name == "NotIn")
      				{
      					//添加參數用
      					return string.Format("{0} Not In ({1})", par, ExpressionRouter(mce.Arguments[1]));
      				}
      			}
      			else if (exp is ConstantExpression)
      			{
      				ConstantExpression ce = ((ConstantExpression)exp);
      				if (ce.Value == null)
      				{
      					return "null";
      				}
      				else
      				{
      
      					return $"'{ce.Value.ToString()}'";
      
      				}
      
      				//對數值進行參數附加
      			}
      			else if (exp is UnaryExpression)
      			{
      				UnaryExpression ue = ((UnaryExpression)exp);
      
      				return ExpressionRouter(ue.Operand);
      			}
      			return null;
      		}
      
      		private static string ExpressionTypeCast(ExpressionType type)
      		{
      			switch (type)
      			{
      				case ExpressionType.And:
      				case ExpressionType.AndAlso:
      					return " AND ";
      
      				case ExpressionType.Equal:
      					return " =";
      
      				case ExpressionType.GreaterThan:
      					return " >";
      
      				case ExpressionType.GreaterThanOrEqual:
      					return ">=";
      
      				case ExpressionType.LessThan:
      					return "<";
      
      				case ExpressionType.LessThanOrEqual:
      					return "<=";
      
      				case ExpressionType.NotEqual:
      					return "<>";
      
      				case ExpressionType.Or:
      				case ExpressionType.OrElse:
      					return " Or ";
      
      				case ExpressionType.Add:
      				case ExpressionType.AddChecked:
      					return "+";
      
      				case ExpressionType.Subtract:
      				case ExpressionType.SubtractChecked:
      					return "-";
      
      				case ExpressionType.Divide:
      					return "/";
      
      				case ExpressionType.Multiply:
      				case ExpressionType.MultiplyChecked:
      					return "*";
      
      				default:
      					return null;
      			}
      		}
      
      		#endregion 底層
      	}
      

        使用

       

      var entity=ExLogic.Get<DeviceNbIotMapping>(s => s.id == id);//返回單個
      //需要返回列表等功能自行擴展

        

       

      posted @ 2020-12-02 10:31  賈咩咩  Views(111)  Comments(0)    收藏  舉報
      主站蜘蛛池模板: 国产av一区二区三区久久| 久久久久青草线蕉综合超碰| 国产超碰无码最新上传| 91高清免费国产自产拍| 亚洲午夜精品国产电影在线观看| 老司机精品成人无码AV| 韩国19禁无遮挡啪啪无码网站| 国产最新精品系列第三页| 我国产码在线观看av哈哈哈网站| 国产成人一区二区三区免费| 在线a亚洲v天堂网2018| 国产一区韩国主播| 亚洲欧洲∨国产一区二区三区 | 人人爽亚洲aⅴ人人爽av人人片 | 中文字幕国产精品一二区| 国产专区一va亚洲v天堂| 中年国产丰满熟女乱子正在播放| 亚洲欧美一区二区三区在线| 中文字幕人妻有码久视频| 免费无码成人AV片在线| 四虎影视一区二区精品| 亚洲综合在线一区二区三区| 国产360激情盗摄全集| 精品国产综合成人亚洲区| 亚洲熟女精品一区二区| 国产在线观看播放av| 开心色怡人综合网站| 蜜芽亚洲AV无码精品国产午夜| 激情人妻自拍中文夜夜嗨| 五月婷婷久久中文字幕| 国产精品乱一区二区三区| 久久精品一本到99热免费| 国产不卡免费一区二区| 国产精品一亚洲av日韩| 成人午夜在线观看日韩| 亚洲暴爽av天天爽日日碰| 合肥市| 99在线精品国自产拍中文字幕| 久久se精品一区精品二区国产| 国产sm重味一区二区三区| 成在线人永久免费视频播放|