tnblog
首页
视频
资源
登录
愿你出走半生,归来仍是少年
排名
8
文章
221
粉丝
7
评论
7
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

core ef执行原生sql

4311人阅读 2022/1/14 16:54 总访问:2060170 评论:0 收藏:0 手机
分类: EF

直接执行原生sql:
添加扩展方法:

  1. public static class EntityFrameworkCoreExtensions
  2. {
  3.     private static DbCommand CreateCommand(DatabaseFacade facade, string sql, out DbConnection connection, params object[] parameters)
  4.     {
  5.         var conn = facade.GetDbConnection();
  6.         connection = conn;
  7.         conn.Open();
  8.         var cmd = conn.CreateCommand();
  9.         if (facade.IsSqlServer())
  10.         {
  11.             cmd.CommandText = sql;
  12.             cmd.Parameters.AddRange(parameters);
  13.         }
  14.         return cmd;
  15.     }
  16.     public static DataTable SqlQuery(this DatabaseFacade facade, string sql, params object[] parameters)
  17.     {
  18.         var command = CreateCommand(facade, sql, out DbConnection conn, parameters);
  19.         var reader = command.ExecuteReader();
  20.         var dt = new DataTable();
  21.         dt.Load(reader);
  22.         reader.Close();
  23.         conn.Close();
  24.         return dt;
  25.     }
  26.     public static List<T> SqlQuery<T>(this DatabaseFacade facade, string sql, params object[] parameters) where T : classnew()
  27.     {
  28.         var dt = SqlQuery(facade, sql, parameters);
  29.         return dt.ToList<T>();
  30.     }
  31.     public static List<T> ToList<T>(this DataTable dt) where T : classnew()
  32.     {
  33.         var propertyInfos = typeof(T).GetProperties();
  34.         var list = new List<T>();
  35.         foreach (DataRow row in dt.Rows)
  36.         {
  37.             var t = new T();
  38.             foreach (PropertyInfo p in propertyInfos)
  39.             {
  40.                 if (dt.Columns.IndexOf(p.Name) != -1 && row[p.Name] != DBNull.Value)
  41.                     p.SetValue(t, row[p.Name], null);
  42.             }
  43.             list.Add(t);
  44.         }
  45.         return list;
  46.     }
  47. }

使用:

  1.  List<Users> ulist = se.Database.SqlQuery<Users>("select * from users where number=@number"new SqlParameter("number""NS001")).ToList();


执行添加,删除,修改等操作
方法1:

  1.  int count =Database.ExecuteSqlRaw(sql,params);

方法2:

  1. context.Database.ExecuteSqlInterpolated()


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价