即使sql生成的DOES返回结果,Linq-to-sql代码也不返回结果

时间:2012-03-09 15:56:21

标签: c# linq-to-sql

我的应用程序中有以下代码

var query = context.xosAssets.Where(x => x.GSA == 0).Take(INDEX_ASSET_QUERY_COUNT);
var assets = query.ToList();

// Debug
string message = string.Format("Assets waiting for indexing: {1}{0}Database:{3}{0}Query: {2}", 
    Environment.NewLine, query.Count(), query.ToString(), context.Connection.Database);
    System.Diagnostics.EventLog.WriteEntry("GSAFeed", message, System.Diagnostics.EventLogEntryType.Information);

运行时,query.Count()为零,assets.Count为零,因为不返回任何结果。但是,这是不正确的,因为此数据库中的所有记录都将其GSA字段设置为零。

当我从query.ToString()获取输出并运行它(将@p0替换为0)时,我得到了所有正确的响应。我已经验证了我与context.Connection.Database输出的数据库完全相同,而且我对可能出错的选项用完了。

为什么Linq-to-sql没有返回结果,即使实际的sql有效?

1 个答案:

答案 0 :(得分:0)

过去我遇到过这样的问题,我一般会以长篇形式重新编写Linq2Sql。它让我摆脱了麻烦。不够专业,不知道为什么,但它可以帮助你。

修改 像这样:

var query = (from x in context.xosAssets
            where x.GSA == 0
            select x).Take(INDEX_ASSET_QUERY_COUNT);

这应返回IQueryable,因此无需执行.ToLIst()