C# 为什么这个IQueryable问题会给我一个错误?
我不明白为什么下面的代码不起作用。它导致生成错误:C# 为什么这个IQueryable问题会给我一个错误?,c#,asp.net,asp.net-mvc,iqueryable,C#,Asp.net,Asp.net Mvc,Iqueryable,我不明白为什么下面的代码不起作用。它导致生成错误: IQueryable'不包含“FirstOrDefault”和最佳扩展方法重载“Queryable.FirstOrDefault(IQueryable)”的定义。 使用系统; 使用System.Collections.Generic; 使用System.ComponentModel.DataAnnotations; 使用System.Data.Entity; 使用System.Linq; 使用System.Web; 使用System.Web.M
IQueryable'不包含“FirstOrDefault”和最佳扩展方法重载“Queryable.FirstOrDefault(IQueryable)”的定义。
使用系统;
使用System.Collections.Generic;
使用System.ComponentModel.DataAnnotations;
使用System.Data.Entity;
使用System.Linq;
使用System.Web;
使用System.Web.Mvc;
使用ruciyansweets.Models;
[HttpGet]
public ActionResult AdminAddorEdit(int id=0)
{
如果(id==0)
返回视图(新模型());
其他的
{
使用(Entities db=新实体())
{
返回视图(db.TableName.Where(x=>x.FieldID==id).FirstOrDefault());
}
}
}
- 定义
是TSource FirstOrDefault(此IQueryable源代码)
命名空间的一部分。检查您的项目是否引用了System.Linq
,并且您已经使用了System.Core
System.Linq代码>和
使用System.Data.Entity代码>
- 确保安装了
软件包EntityFramework
Rayman Bacchus,为了帮助您,您需要添加一条错误文本message@Rayman巴克斯:你能把
TableName
的定义添加到帖子里吗?它应该像公共虚拟DbSet TableName{get;set;}
我的控制器中已经有使用System.Linq
和使用System.Data.Entity
。实际上,它们在控制器和模型中。@Rayman Bacchus:出于某种原因,编译器找不到FirstOrDefault()
定义。这可能是因为:1)装配参考错误;2) LINQ表达式中的类型不匹配。执行以下操作:将插入符号置于扩展方法的位置,然后按F12。查看文件的第一行,其中定义了where()
(同一程序集中定义的FirstOrDefault()
),以了解哪个程序集实现了where
扩展方法。它应该是System.Core
。看看是不是真的?弄明白了。我使用的模型显然不正确。但我无法解释为什么。我根据数据库创建了自己的模型,但它不起作用,但当我使用自动创建的模型时,它起作用了。谢谢你的这个想法——它为我指明了使用错误模型的方向。我只是不明白为什么一个模型有效,另一个没有,它们基本上都是复制品。但这将是另一天的调查。@Rayman Bacchus:这就是为什么在这种情况下建议创建一个。很高兴你解决了这个问题。