首页 新闻 会员 周边 捐助

关于EF不合常理的一个问题 在线等

-1
悬赏园豆:30 [已解决问题] 解决于 2014-10-20 15:58

代码是这样:

 var broadcasts = repository.FindBySpecification(m => m.SendToCompanyId==null);

按理说会返回表里SendToCompanyId is null 的数据,但是没有,却生成了如下的sql

SELECT 

CAST(NULL AS uniqueidentifier) AS [C1],
CAST(NULL AS varchar(1)) AS [C2],
CAST(NULL AS datetime) AS [C3],
CAST(NULL AS uniqueidentifier) AS [C4],
CAST(NULL AS uniqueidentifier) AS [C5]
FROM ( SELECT 1 AS X ) AS [SingleRowTable1]
WHERE 1 = 0

牛头不对马嘴,EF这样做只是为了填充一个空白的集合。

那么问题来了,我要怎么才能获得SendToCompanyId is null 的数据。

在线等……

鲜宏的主页 鲜宏 | 初学一级 | 园豆:132
提问于:2014-10-15 17:31
< >
分享
最佳答案
0

SendToCompanyId这个属性是什么类型的??

收获园豆:10
幻天芒 | 高人七级 |园豆:37207 | 2014-10-16 09:11

Guid? 可空类型

鲜宏 | 园豆:132 (初学一级) | 2014-10-16 09:38

@鲜宏: 那就有点奇葩了。你把FindBySpecification这个方法贴一下...

幻天芒 | 园豆:37207 (高人七级) | 2014-10-16 09:59

@幻天芒: 

public virtual IEnumerable<TEntity> FindBySpecification(Expression<Func<TEntity, bool>> where)
{
var ie= DataContext.CreateObjectSet<TEntity>().Where(where);
ie.ToList().ForEach(m => m.RepositoryProvider = this);
return ie;
}

鲜宏 | 园豆:132 (初学一级) | 2014-10-16 10:01

@鲜宏: DataContext.Set<TEntity>().Where(where),用下这个呢~

幻天芒 | 园豆:37207 (高人七级) | 2014-10-16 10:02

@鲜宏: 不应该出现这种问题才对,我表示用EF的时候没遇到过~

幻天芒 | 园豆:37207 (高人七级) | 2014-10-16 10:03

@幻天芒: 好吧,多谢

鲜宏 | 园豆:132 (初学一级) | 2014-10-16 10:05
其他回答(2)
1

听说是这样的

var broadcasts = repository.where(m => m.SendToCompanyId==null);

或者是这样的

var qury= from c in repository

               where c.SendToCompanyId==null

               select c;

收获园豆:10
爱编程的大叔 | 园豆:30844 (高人七级) | 2014-10-15 17:42

我也是这样写的。DataContext.CreateObjectSet<TEntity>().Where(where);

支持(0) 反对(0) 鲜宏 | 园豆:132 (初学一级) | 2014-10-15 17:43

@鲜宏: 你有其他地方的代码错误造成的。

请做一个最简单的EF项目,测试一下WHERE用法即知。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2014-10-16 12:36
0

dbnull吧。null不是数据库意义的null。

收获园豆:10
Cherbim | 园豆:323 (菜鸟二级) | 2014-10-15 21:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册