0

我正在使用http://msdn.microsoft.com/en-us/data/jj591506上的教程自学实体框架。

using (var db = new DatabaseEntities())
{
            // Section 1
            var section = new Section
            {
                SectionID = 1,
                SectionLetter = "d"
            };
            db.Sections.Add(section);
            db.SaveChanges();

            // Section 2

            var query = from b in db.Sections 
                        orderby b.SectionLetter
                        select b;

            foreach (var item in query)
            {
                this.Title = item.SectionLetter;
            }
}

当我一起使用上面代码的第 1 节和第 2 节时,它们运行良好。但是,当我只运行第 2 节时,标题不会改变,这意味着它甚至不会返回单个项目,因此不会进入 foreach 循环。我不明白为什么它不会进入循环。

我意识到这个问题可能有一个明显的答案,但我认为我应该在 stackoverflow 上提问,而不是问同事,以便其他有相同问题的人可以找到答案。

我怀疑这个问题可能有一个线索:System.Data.Entity not working as expected for MVC Entity Framework。不幸的是,我似乎无法解决。

4

2 回答 2

1

看起来该行var db = new DatabaseEntities()正在连接到没有任何行的数据库。检查Connection属性db以确保它位于正确的服务器/实例/文件上。

如果您在 上执行“快速查看”,您应该能够看到表格的内容query.ToArray()

于 2012-12-30T11:20:12.430 回答
1

你确定如果你只运行第 2 节:

var query = from b in db.Sections 
            orderby b.SectionLetter
            select b;

变量query实际上会产生结果吗?您是否已将其调试到可以看到查询内部内容的程度?

  var query = (from b in db.Sections 
              orderby b.SectionLetter
              select b).ToList();

试试这个,然后在它后面放一个断点。然后查看查询变量中有多少元素。如果有 0,那么你的 foreach 不会做很多事情是合乎逻辑的。

您是否检查过您的实际数据库以查看其中是否有任何记录?

于 2012-12-30T11:21:21.060 回答