首页 新闻 搜索 专区 学院

MVC+EF,lambda表达式与反射报错 LINQ to Entities 不识别方法System.Object GetValue

0
悬赏园豆:100 [已解决问题] 解决于 2014-03-04 19:48

我想在字段上加特性checkexist,然后在保存数据时检查字段上有checkexist的,先检查将要保存的数据与数据库中已有数据是否冲突,写了如下代码:

 public string CheckExist(T model)
        {
            Type t1 = typeof(T);

            var pInfo = t1.GetProperties().Where(o => o.GetCustomAttribute(typeof(Common.Attributes.CheckExistAttribute)) != null);
       string temps1=string.empty,temps2=string.empty;
            foreach (var p in pInfo)
            {
                //临时值 temps2=p.GetValue(model,null)
                GetListBy(u => p.GetValue(u, null).ToString() == p.GetValue(model, null).ToString());
            }

            return "";
        }


现在的问题是p.GetValue(u,null)没法用临时值的方法,这个怎么处理,谢谢指导!!!

happydaily的主页 happydaily | 小虾三级 | 园豆:674
提问于:2014-03-04 11:36
< >
分享
最佳答案
0

 GetListBy(u => p.Name == p.GetValue(model, null).ToString());

happydaily | 小虾三级 |园豆:674 | 2014-03-04 19:48
其他回答(3)
0

这个可以用LinqKit解决。你下载一个,然后包转一下就行了。具体怎么用忘记了,好久没用EF了。

收获园豆:80
幻天芒 | 园豆:36608 (高人七级) | 2014-03-04 13:13

谢谢,我先试试!

支持(0) 反对(0) happydaily | 园豆:674 (小虾三级) | 2014-03-04 14:29
0

GetListBy里面是什么啊

lawbc | 园豆:63 (初学一级) | 2014-03-04 16:51

  public List<T> GetListBy(Expression<Func<T, bool>> whereLambda)

支持(0) 反对(0) happydaily | 园豆:674 (小虾三级) | 2014-03-04 17:44

@happydaily: 还是放弃Linq to xxx的orm吧,微软都已经放弃改用EF了,只有EF能拯救你,呵呵,Linq to都要具体的值不能识别表达式的

支持(0) 反对(0) lawbc | 园豆:63 (初学一级) | 2014-03-05 10:44
0

Linq to Entity 最终是要把linq的方法解析成sql语句,连一些很简单的类型转换都不能识别,更别说 C#中的其它方法了,

只能把结果写成比较简单且能识别的 linq 表达示,用LinqKit 是一种方法

收获园豆:20
Zery | 园豆:6069 (大侠五级) | 2014-03-04 18:04
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册