一般来说,我对 C# 和 MVC 非常陌生,我一直在创建自己的小博客站点作为测试项目。尽管到目前为止大多数事情都在工作,但我在从 LINQ 查询中选择多个列时遇到了问题。只有在偶然发现关于 SO 的问题后,我才意识到我可以使用生成的实体类作为强类型模型来处理这个问题。我需要这个,因为我一直在创建一个数据库层(这也是我以前没有使用过的东西)并且试图通过该层传递匿名类型不起作用。我理解为什么会这样,所以我很满意我正朝着正确的方向前进。
但是,这种方法似乎给我带来了另一个问题。我尝试了一个简单的测试来从我的类别表中检索 2 列:CategoryID 和 Name。我最初尝试了以下方法:
using (MyEntities db = new MyEntities())
{
var model = from c in db.Categories
select new Category { CategoryID = c.CategoryID, Name = c.Name };
return View(model);
}
当尝试迭代视图中的模型时,这给了我 ObjectContext is disposed 错误。在阅读了这个问题之后,我尝试将 return 语句移到 using 块之外并在模型上调用 AsEnumerable() ,如下所示:
IEnumerable<Category> model;
using (MyEntities db = new MyEntities())
{
model = from c in db.Categories
select new Category { CategoryID = c.CategoryID, Name = c.Name };
}
return View(model.AsEnumerable());
但是,当我尝试迭代视图中的模型时,这仍然给我同样的 ObjectContext is disposed 错误。所以现在我不明白为什么我会收到错误。我什至尝试完全删除 using 指令,但这给了我一个不同的错误:
“无法在 LINQ to Entities 查询中构造实体或复杂类型 'MyProjectModel.Category'。”
如果有帮助,这是我认为的相关代码:
@model IEnumerable<MyProject.Models.Category>
@foreach (var category in Model)
{
<p>@category.Name</p>
}
有人会善意地告诉我我缺少什么吗?
谢谢。