2013-08-20 53 views
0

我有一个dbcontext,我查询返回一个模型,其中包含所有项目的总数和一个代表项目的子集的Ienumerable类型。我有三种环境:localhost,Development和Test。使用相同版本的代码,Development和localhost会返回包含count和项目列表的完整数据集。测试用一个空的物品清单返回正确的计数。代码集在所有环境中都是相同的。我已将所有环境指向同一数据库,以隔离数据库中可能存在的任何问题。查询看起来像:实体框架返回部分为空数据集

var rawItems = context.entity.Where(x => x.id == ID).OrderBy(x => x.id); 
totalCount = rawItems.Count(); 
return rawItems.Skip(0).Take(25).Select(x => x.ToExternalModel()) 

ToExternalModel是变换方法,它采用了对象,并将其转变为一个不同的模型。这段代码没有抛出异常。我删除了所有尝试/捕获以确保。

我真的认为这是一个环境问题,我真的不知道它可能是什么。

+0

您为什么需要跳过(0)?如果您只是返回rawItem而不将其转换为外部模型,结果是否相同? – Nilesh

+0

这段代码表示我用来执行的参数。在真正的代码中,0是一个变量,可能不是0.我没有尝试过只返回原始项目列表,但是为了工作,这意味着转换在三台机器中的一台上表现不同。 – user2698212

+0

事实证明,在测试服务器上生成的查询与在其他服务器上生成的查询不同(不同的连接结构)。我仍在研究它为什么会有所不同。 – user2698212

回答

0

问题是实体框架模式中的外键定义错误。我仍然不确定为什么某些环境创建了查询的工作版本,并且一个环境创建了非工作查询。我将继续研究,但修复外键定义是解决方案。