ASP.NET MVC 4 延迟查询执行,不从数据库中检索数据



我是MVC 4 ASP.NET 新手。在我的项目中,我在 EF 中使用代码优先技术。我想从数据库中检索一些数据,我为此使用了以下代码:

    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。我不知道这个名字是从哪里来的。那么我是如何克服这个问题的呢?

Table("BO")装饰BO类以指定表名(属性位于System.ComponentModel.DataAnnotations.Schema命名空间中)

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

在 DbContext 类中编写以下代码:

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

方法中的 modelBuilder.TConvention.Remove 语句可防止表名被复数化。如果不执行此操作,生成的表将命名为"学生"、"课程"和"注册"。相反,表名称将为"学生"、"课程"和"注册"。开发人员对表名是否应复数存在分歧。本教程使用单数形式,但重要的一点是,您可以通过包含或省略此行代码来选择您喜欢的任何形式。

最新更新