Asp.net mvc 4 ASP.NET MVC 4延迟查询执行未从数据库检索数据
我是ASP.NETMVC4的新手。在我的项目中,我在EF中使用了代码优先技术。我想从数据库中检索一些数据,为此我使用了以下代码:Asp.net mvc 4 ASP.NET MVC 4延迟查询执行未从数据库检索数据,asp.net-mvc-4,linq-to-entities,deferred-execution,Asp.net Mvc 4,Linq To Entities,Deferred Execution,我是ASP.NETMVC4的新手。在我的项目中,我在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) {
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() });
}
List ls=new List();
var lm=db.BOs中的m//从数据库中获取数据
选择m;
foreach(变量温度单位:lm)
{
添加(新SelectListItem(){Text=temp.Name,Value=temp.Id.ToString()});
}
但当执行指针在foreach
内移动时,它会立即从循环中返回,显示返回ls
值计数=0
。代码在运行时并没有给我任何错误,这就是为什么我不知道哪里出了问题
更新:我发现了一些新问题。当我把鼠标指针放在var lm上时;它向我显示了查询,并且
FROM
子句中的查询表名不是我的SQL数据库中的那个。我的SQL表名是BO
,在查询中它使用BOes
。我不知道这个名字是从哪里来的。那么我如何克服这个呢 在DbContext类中编写以下代码:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove();
}
OnModelCreating方法中的modelBuilder.Conventions.Remove语句防止表名被复数化。如果不这样做,生成的表将命名为Students、Courses和Enrollments。相反,表名将是学生、课程和注册。开发人员对表名是否应该是复数形式存在分歧。本教程使用单数形式,但重要的一点是,您可以通过包含或省略这行代码来选择您喜欢的形式。使用
Table(“BO”)
来装饰BO
类,以指定表名(属性位于System.ComponentModel.DataAnnotations.Schema
命名空间中)
检查EF映射并查看表映射到实体BOs的内容。
[Table("BO")]
public partial class BO
{
...