[英]ASP.NET MVC4: IQueryable does not contain a definition for 'Add'
我试图制作一个MVC新闻系统。 我从使用一个多元视线教程开始,该教程用于创建一个拥有员工的部门。 我改变了想法以适应自己的目的,将部门更改为“类别”,将员工更改为“新闻发布”。 一切正常,但是现在我想删除类别,因为我的新闻系统不需要类别。 但是当我这样做时,我不能使用entityframework添加到数据库中。
我有一个数据源接口,如下所示:
INewMvcSiteDataSource
public interface INewMvcSiteDataSource
{
IQueryable<NewsPost> NewsPosts { get; }
void Save();
}
这是由我的数据库上下文类继承的:
NewMvcSiteDb
public class NewsMvcSiteDb : DbContext, INewMvcSiteDataSource
{
public NewsMvcSiteDb() : base("DefaultConnection")
{
}
public DbSet<NewsPost> NewsPosts { get; set; }
IQueryable<NewsPost> INewMvcSiteDataSource.NewsPosts
{
get { return NewsPosts; }
}
public void Save()
{
SaveChanges();
}
}
然后,我想在控制器中使用它来向数据库添加新闻发布:
NewsController
var newsPost = new NewsPost()
{
Subject = newsModel.Subject,
Content = newsModel.Content,
ImagePath = newsModel.ImagePath
};
_db.NewsPosts.Add(newsPost);
_db.Save();
但这是ADD失败并显示以下消息的地方: 'System.Linq.IQueryable'不包含'Add'的定义,并且找不到扩展方法'Add'接受类型为'System.Linq.IQueryable'的第一个参数(您是否缺少using指令或程序集引用?)
现在,正如错误所言,这是由于使用IQueryable引起的,但我不知道还有其他方法。
你们可以帮忙吗?
谢谢。
如果您不介意通过界面公开DbSet(某些人不喜欢ORM渗入应用程序),则应该能够执行以下操作:
public interface INewMvcSiteDataSource
{
DbSet<NewsPost> NewsPosts { get; }
void Save();
}
public class NewsMvcSiteDb : DbContext, INewMvcSiteDataSource
{
public NewsMvcSiteDb() : base("DefaultConnection")
{
}
public DbSet<NewsPost> NewsPosts { get; set; }
public void Save()
{
SaveChanges();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.