2013-10-14 76 views
0

我是ASP.NET MVC 4中的新成员。在我的项目中,我使用代码优先 EF中的技术。我想从数据库中获取一些数据,我用下面的代码是:ASP.NET MVC 4延迟查询执行不检索数据库中的数据

List<SelectListItem> ls = new List<SelectListItem>(); 
    var lm = from m in db.BOs //fetch data from database 
      select m; 
    foreach (var temp in lm) 
    { 
     ls.Add(new SelectListItem() { Text = temp.Name, Value = temp.Id.ToString() }); 
    } 

但是,当执行指针移动内部foreach立刻回来了显示return lsCount = 0循环。代码在运行时不会给我任何错误,这就是为什么我没有得到错误的地方。

更新:我发现了一些新的这个问题。当我将鼠标指针放在var lm上时;它显示我查询并在查询表名FROM子句是不是在我的SQL数据库中。我的SQL表名是BO,查询时它是BOes。我不知道这个名字来自哪里。所以我如何克服这个?

+0

检查EF映射,看看表映射到你的实体不中。 – Spock

回答

0

写下面的DbContext类内代码:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
    } 

在OnModelCreating方法的modelBuilder.Conventions.Remove声明防止表名被使用复数。如果您没有这样做,则生成的表格将被命名为学生,课程和注册。相反,表名将是学生,课程和注册。开发人员不同意表名是否应该复数化。本教程使用单数形式,但重要的一点是,您可以通过包含或省略此行代码来选择您喜欢的任何形式。

1

装饰你BOTable("BO")指定表名(属性是System.ComponentModel.DataAnnotations.Schema命名空间)

[Table("BO")] 
public partial class BO 
{ 
    ...