• EFcore 自定义执行SQL语句


    public static class EntityFrameworkCoreExtension
    	{
    		private static DbCommand CreateCommand(DatabaseFacade facade, string sql, out DbConnection connection, params object[] parameters)
    		{
    			var conn = facade.GetDbConnection();
    			connection = conn;
    			conn.Open();
    			var cmd = conn.CreateCommand();
    			if (facade.IsSqlServer())
    			{
    				cmd.CommandText = sql;
    				cmd.Parameters.AddRange(parameters);
    			}
    			return cmd;
    		}
    
    		public static DataTable SqlQuery(this DatabaseFacade facade, string sql, params object[] parameters)
    		{
    			var command = CreateCommand(facade, sql, out DbConnection conn, parameters);
    			var reader = command.ExecuteReader();
    			var dt = new DataTable();
    			dt.Load(reader);
    			reader.Close();
    			conn.Close();
    			return dt;
    		}
    
    		public static List<T> SqlQuery<T>(this DatabaseFacade facade, string sql, params object[] parameters) where T : class, new()
    		{
    			var dt = SqlQuery(facade, sql, parameters);
    			return dt.ToList<T>();
    		}
    
    		public static List<T> ToList<T>(this DataTable dt) where T : class, new()
    		{
    			var propertyInfos = typeof(T).GetProperties();
    			var list = new List<T>();
    			foreach (DataRow row in dt.Rows)
    			{
    				var t = new T();
    				foreach (PropertyInfo p in propertyInfos)
    				{
    					if (dt.Columns.IndexOf(p.Name) != -1 && row[p.Name] != DBNull.Value)
    						p.SetValue(t, row[p.Name], null);
    				}
    				list.Add(t);
    			}
    			return list;
    		}
    }
    

      

  • 相关阅读:
    8月工作杂记
    好用的MarkDown编辑器
    Windows下遍历某目录下的文件
    Visual Assist 试用期过期怎么办?
    网易有道面试
    Windows操作系统C盘占用空间过多
    如果有一天我当了面试官
    matlab进行三维重建
    HBase , Doris
    《Java程序设计》第6周学习总结
  • 原文地址:https://www.cnblogs.com/bluesky0122/p/11524046.html
Copyright © 2020-2023  润新知