通过 dbContext 访问 SQL 中生成的新字段值
Accessing new field value generated in SQL via dbContext
我正在使用 dbContext
并且我正在 运行 宁一个相当复杂的 SQL 查询(下面只显示一个简单的例子),所以为了避免必须 运行 查询两次以获得计数,我根据本网站上的其他建议使用 COUNT AS
到 return 记录总数。
但是,我一直无法弄清楚如何访问结果 属性:
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);
}
}
}
在上面的示例中,SQL 查询生成额外字段 TotalRecords
。当我 运行 在 Management Studio 中查询时,结果符合预期。但是如何通过 dbContext
访问 TotalRecords
字段?
我还尝试将 TotalRecords
字段作为 DMSMeta class 的一部分包含在内,但随后 SQL 查询失败并显示指定了 TotalRecords
字段的错误两次。我尝试为包含 TotalRecords
字段的 DMSMeta 创建部分 class,但该值仍然是默认值,并且在查询期间不会更新。
我还尝试了以下方法:
db.Entry(Item).Property("TotalRecords").CurrentValue
但这也产生了错误。任何帮助将不胜感激 - 我确信我遗漏了一些明显的东西!我只想找出一种方法来访问查询 return 编辑的记录总数
你必须创建一个新的class(不是一个实体class而是一个纯粹的DAOclass)DMSMetaWithCount
(不言自明?)然后
context.Database.SqlQuery<DMSMetaWithCount>("select *, COUNT(1) OVER() AS TotalRecords FROM DMSMetas");
请注意
- 恕我直言,
select *
总是一种不好的做法。
- 您将无法跟踪非新实体 class
我正在使用 dbContext
并且我正在 运行 宁一个相当复杂的 SQL 查询(下面只显示一个简单的例子),所以为了避免必须 运行 查询两次以获得计数,我根据本网站上的其他建议使用 COUNT AS
到 return 记录总数。
但是,我一直无法弄清楚如何访问结果 属性:
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);
}
}
}
在上面的示例中,SQL 查询生成额外字段 TotalRecords
。当我 运行 在 Management Studio 中查询时,结果符合预期。但是如何通过 dbContext
访问 TotalRecords
字段?
我还尝试将 TotalRecords
字段作为 DMSMeta class 的一部分包含在内,但随后 SQL 查询失败并显示指定了 TotalRecords
字段的错误两次。我尝试为包含 TotalRecords
字段的 DMSMeta 创建部分 class,但该值仍然是默认值,并且在查询期间不会更新。
我还尝试了以下方法:
db.Entry(Item).Property("TotalRecords").CurrentValue
但这也产生了错误。任何帮助将不胜感激 - 我确信我遗漏了一些明显的东西!我只想找出一种方法来访问查询 return 编辑的记录总数
你必须创建一个新的class(不是一个实体class而是一个纯粹的DAOclass)DMSMetaWithCount
(不言自明?)然后
context.Database.SqlQuery<DMSMetaWithCount>("select *, COUNT(1) OVER() AS TotalRecords FROM DMSMetas");
请注意
- 恕我直言,
select *
总是一种不好的做法。 - 您将无法跟踪非新实体 class