0

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

    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 lsvalue Count = 0。代码在运行时没有给我任何错误,这就是为什么我没有得到哪里出了问题。

更新:我在这个问题上发现了一些新的东西。当我将鼠标指针悬停在var lm; 它向我显示了查询,并且在FROM子句中的查询表名不是我的 SQL 数据库中的那个。我的 SQL 表名是BO并且在查询中它正在使用BOes. 我不知道这个名字是从哪里来的。那么我如何克服这个?

4

2 回答 2

1

用指定表名来装饰你的BOTable("BO")(属性在System.ComponentModel.DataAnnotations.Schema命名空间中)

[Table("BO")]
public partial class BO
{
    ...
于 2013-10-14T10:29:58.720 回答
0

在 DbContext 类中编写以下代码:

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

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

于 2013-10-14T10:25:08.040 回答