2012-12-30 28 views
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。不幸的是我似乎无法解决这个问题。

+0

[你有什么尝试?](http://whathaveyoutried.com) – GameScripting

+0

这似乎太简单了,我猜你甚至没有试图调试你的代码... – GameScripting

+0

如果你已经完成调试,什么是您离开使用区块后的标题属性?是emty吗?内容不只是呈现在用户界面上?以某种方式阻止用户界面?有很多的可能性是可以去做的。您发布的代码似乎没问题,所以*您必须提供有关特定问题的更多信息。 – GameScripting

回答

1

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

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

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不会做很多。

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