说我有一个这样的查询:
SELECT TOP (1000)
[Apps].Id,
[Apps].Name,
(SELECT COUNT(*) FROM [DbName].[dbo].[Requests] Requests WHERE [Apps].Id = [Requests].AppId) as PendingRequests
FROM [DbName].[dbo].[Apps] Apps
是否有一种无需使用存储过程即可映射此计数列的方法?
我尝试了类似的方法,但似乎没有用:
modelBuilder.Entity<AppModel>()
.Property(m => m.PendingRequests)
.HasComputedColumnSql(
"(SELECT COUNT(*) FROM [Requests] " +
"WHERE [Apps].[Id] = [Requests].[AppId]) as PendingRequests"
);
我可以只使用填充的IEnumerable
异物来检查Count()
,但是出于明显的原因,父对象列表的性能不是很好。
有什么提示吗?
答案 0 :(得分:2)
您当然可以在查询中进行映射:
from row in _db.Apps select new App() {
Id = row.Id
PendingRequests = row.Requests.Count()
}
我认为您已经正确设置了FK,因此导航属性可以正常工作。