Linqpad查询错误

Linqpad query error

我是一位经验丰富的 SQL 开发人员,正在努力学习 LINQ,尤其是 LINQPad。我创建了一个简单的 MVC5 应用程序并添加了对 Adventure Works 2012 的引用。我在学生控制器中有以下代码:

 namespace Linqpad.Controllers
    {
        public class PersonController : Controller
        {
            private AdventureWorks2012Entities db = new AdventureWorks2012Entities();

            public ActionResult Index()
            {
                var courses = db.Employees
                .Include(p => p.PurchaseOrderHeaders)
                .Where(p => p.Gender=="Male");
                return View();
            }
}
}

这按预期工作。我现在正尝试在 Linqpad 中 运行 这个,但是我收到以下错误:

如何在 Linqpad 中将此查询重构为 运行?

为了在 LINQPad 5 中使用 Include,您需要包含对 EntityFramework.dll 的引用。为此,

  1. 在查询中按 F4 window 查看查询属性
  2. 单击 Additional References window 和 select 中的 Add,或浏览 EntityFramework.dll
  3. Additional Namespace Imports 下添加命名空间 System.Data.Entity

完成这些步骤后,Include 可以附加到您的 Table 对象。

var courses = Employees
        .Include(p => p.PurchaseOrderHeaders)
        .Where(p => p.Gender=='M')
        .Dump();

使用Dump()获取输出。同时将语言设置为 C# Statment(s)

在顶部工具栏中,您将语言设置为 "C# Expression." 这意味着 window 中的表达式将自动计算并转储到输出区域。 var courses = 在此模式下是不必要的。

如果您现在将语言模式设置为 "C# Statements,",它将评估您键入的任何语句,并且仅在您将 .Dump() 添加到末尾(或 Console.WriteLine)时才会输出内容.所以你的陈述将变成:

    var courses = db.Employees
        .Include(p => p.PurchaseOrderHeaders)
        .Where(p => p.Gender=="Male")
        .Dump();

您可以在“选项”>“查询”区域更改默认语言模式。