tnblog
首页
视频
资源
登录

关于自编EF使用变量作为参数返回空指针异常的问题

3735人阅读 2021/12/10 11:52 总访问:47204 评论:0 收藏:0 手机
分类: .NET
//后台EF方法(自编)
public List<T> GetTs<T>(Expression<Func<T, bool>> func=null)
//调用
List<UserInfo> users = eF.GetTs<UserInfo>(a => a.UserName == "张三");
//此时无异常
//但是将条件变为参数之后
ps:
string d="张三";
List<UserInfo> users = eF.GetTs<UserInfo>(a => a.UserName == d);
//此时会返回一个
ConstantExpression right = binaryExpression.Right as ConstantExpression;
//right=null  而且调试可以看到right的NodeType为:MemberAccessException
//但是MemberAccessException是类成员值为空或无权限访问时的一个异常
//所以此时不能通过ConstantExpression 类的方法取到右边参数的值
//解决方法: 把right值模仿left值来取
 MemberExpression memberr = binaryExpression.Right as MemberExpression;//注:不再是ConstantExpression
 var RightValue=Expression.Lambda(memberr).Compile().DynamicInvoke(); //此时 直接取到参数d里面的值 ‘张三’
 //从而生成sql语句 : ‘张三’

判断数据是否为数值类型,便于生成sql语句时判断是否需要添加单引号以保存字符串类型的数据 保证sql语句能正常执行

//判断原理 1.拿到数据的类型 2.通过和数值类型继承的父类进行比较object  num=1;Type typea=num.GetType();
if (!typea.IsClass && !typea.IsInterface && typea.GetInterfaces().Any(a => a == typeof(IFormattable)))
{
   //数据处理                                         
}
 else
{
        //数据处理                                  
}

                

评价
与其用时间去get一个未知的以后,不如做好现在,set自己一个好的以后
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术