排名
1
文章
860
粉丝
112
评论
163
.net core自定义项目模板,创建自己的模板项目,使用命令行创建模板项目
尘叶心繁 : 可以可以讲真的我都想弄个模板
net core webapi post传递参数
庸人 :
确实坑哈,我也是下班好了好几次,发现后台传递对象是可以的,但...
.net webapi 返回需要的字段,忽略某些字段,修改字段名等
雨雨雨雨雨辰 : 已精
.net webapi 返回需要的字段,忽略某些字段,修改字段名等
雨雨雨雨雨辰 :
疯狂反射
百度编辑器自定义模板
庸人 : 我建议换个编辑器,因为现在百度富文本已经停止维护了,用tinymec...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术

有时候在执行一个赋值一点的sql要动态生成用lamdba来写很不方便,新版本用动态生成表达式树的方式也不怎么行了...
需要时间去慢慢研究,我们也可以尝试选择使用原生的sql方法。可以使用FromSqlRaw 或FromSqlInterpolated
一个简单的动态拼接or条件的例子:
- //动态构建sql语句
- StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.Append("select * from Article where userid=@userid and IsXX!=1 and (");
- List<SqlParameter> sqlParameters = new List<SqlParameter>();
- sqlParameters.Add(new SqlParameter("userid", userid));
-
- for (int i = 0; i < _keywords.Count; i++)
- {
- stringBuilder.Append(" Title like @key" + i);
- if (i != _keywords.Count - 1)
- {
- stringBuilder.Append(" or ");//不是最后一个说明还有条件需要链接一个or
- }
- sqlParameters.Add(new SqlParameter("key" + i, "%" + _keywords[i] + "%"));
- }
- stringBuilder.Append(" ) ");
-
- var queryable = context.Article.FromSqlRaw(stringBuilder.ToString(), sqlParameters.ToArray()).ToList();
ef core执行原生sql的查询你可能还需要加上的扩展方法:
如下:
- public static class EntityFrameworkCoreExtensions
- {
- 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;
- }
- }
ef core执行原生sql的增加,删除修改的方法:
方法1:
- int count =Database.ExecuteSqlRaw(sql,params);
方法2:
- context.Database.ExecuteSqlInterpolated()
未完待续,先简单记录一下
linq方式的动态条件:https://www.tnblog.net/aojiancc2/article/details/270
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)
评价
雨雨雨雨辰