如何加载非实体查询

本文关键字:实体 查询 加载 何加载 | 更新日期: 2023-09-27 17:58:57

我的WCF域服务中有这个:

    public List<string> GetTop5ActiveUsersByManagementMessages()
    {
        return this.ObjectContext.Logs
        .Where(w => w.Message == "Created User" || 
               w.Message == "Removed User" || w.Message == "Updated User")
        .GroupBy(w => w.Username)
        .OrderByDescending(g => g.Count())
        .Select(s => s.Key)
        .Take(5).ToList();
    }

现在我想在我的视图模型中加载它,如下所示:

context.Load(context.GetTop5ActiveUsersByManagementMessages(), 
             GetActiveUsersCallback, true);

然而,它抱怨需要显式地指定类型。我该如何解决这个问题?

如何加载非实体查询

"无休止查询"实际上并不是一件事。您所写的是一个"Invoke"操作。你只需要用不同于客户的方式来称呼它。

context.GetTop5ActiveUsersByManagementMessages(GetActiveUsersCallback, null)

当您将一个方法添加到DataContext时,它希望您在该上下文的配置中指定某些内容,如返回类型。

这些文章讨论了将存储过程公开为方法,但它将使您了解EF所期望的内容。

如果你确实通过设计器创建了一个新方法,那么如果你想的话,你可能可以手动进入EF XML文件并添加返回类型定义等

http://msdn.microsoft.com/en-us/library/bb384566.aspx和http://msdn.microsoft.com/en-us/library/bb629304.aspx.

我认为你需要把EF配置的方法"连接起来",否则你会觉得不太好。