我正在使用C#,Entity Framework和SQL Server 2008 R2创建一个WPF应用程序。我试图触发以下查询。
Select Convert(nvarchar(10),bk.BookingDate,103) as Date, Count(*)
from Booking bk
where
Convert(date,bk.BookingDate) between '2014-10-01' and '2014-10-31'
and bk.IsDeleted = 0
group by Convert(nvarchar(10),bk.BookingDate,103)
order by 1
如果直接在SQL Server提示符上触发并获取结果,则此查询有效。
但是,当我尝试使用Entity Framework时,我得到NULL
值。
var values = context.Database
.SqlQuery<KeyValuePair<string, int>>(query)
.ToList<KeyValuePair<string, int>>();
答案 0 :(得分:1)
我认为这是因为你正在使用KeyValuePair<>
,尝试创建一个简单的类,如:
public class MyResult
{
public DateTime Date { get; set; }
public int TotalCount { get; set; }
}
并在查询中添加count(*) as TotalCount
。并将其用作SqlQuery
调用的泛型类型参数。要记住的一个关键事项是EF将在结果类型上查找名称匹配从查询返回的列的成员。举例来说,如果您的查询返回了一个名为&#34; total_count&#34;的列,您将需要一个名为&#34; total_count&#34;的类的属性。 (用下划线)。