实体框架数据库查询结果为NULL值

时间:2014-10-27 16:20:43

标签: c# wpf entity-framework

我正在使用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>>();

enter image description here

  1. 是因为我在方法调用中使用KeyValue对吗?
  2. 有没有使用Entity Framework执行此操作的替代方法?
  3. 或者我应该使用旧式数据库连接和命令来运行它 查询?

1 个答案:

答案 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;的类的属性。 (用下划线)。