我正在使用dbContext
并且我正在运行一个相当复杂的SQL查询(只是在下面显示一个简单的示例),所以为了避免必须运行查询两次来获取计数,我正在使用{ {1}}按照此站点上的其他建议返回记录总数。
但是,我无法弄清楚如何访问结果属性:
COUNT AS
在上面的示例中,SQL查询生成额外字段using (var db = new DMSContext())
{
string queryString = "select *, COUNT(1) OVER() AS TotalRecords FROM DMSMetas";
var Metas = db.DMSMetas.SqlQuery(queryString).ToList();
for (int i = 0; i <= Metas.Count - 1; i++)
{
var Item = Metas[i];
if (i == 0)
{
//Want to do this, but TotalRecords not part of the DMSMeta class. How to access the created column?
Console.WriteLine("Total records found: " + Item.TotalRecords);
}
}
}
。当我在Management Studio中运行查询时,结果是预期的。但是,如何通过TotalRecords
访问TotalRecords
字段?
我还尝试将dbContext
字段作为DMSMeta类的一部分包含在内,但SQL查询失败,错误指出TotalRecords
字段被指定了两次。我尝试为包含TotalRecords
字段的DMSMeta创建一个分部类,但是该值仍然是默认值,并且在查询期间不会更新。
我也尝试了以下内容:
TotalRecords
但这也产生了一个错误。任何帮助将不胜感激 - 我相信我错过了一些明显的东西!我想要的是找出一种方法来访问查询返回的记录总数
答案 0 :(得分:1)
你必须创建一个新类(不是实体类,而是纯DAO类)DMSMetaWithCount
(自解释?)然后
context.Database.SqlQuery<DMSMetaWithCount>("select *, COUNT(1) OVER() AS TotalRecords FROM DMSMetas");
请注意
select *
总是不好的做法。