【发布时间】:2013-01-29 12:23:40
【问题描述】:
我尝试制作一个 MVC 新闻系统。我从使用复数教程开始,该教程用于创建一个有员工的部门。我改变了想法以适应自己的目的,将部门更改为“类别”,将员工更改为“新闻邮报”。这一切都很好,但现在我想删除类别,因为我的新闻系统不需要类别。但是当我这样做时,我无法使用实体框架添加到数据库中。
我有一个如下所示的数据源接口:
INewMvcSiteDataSource
public interface INewMvcSiteDataSource
{
IQueryable<NewsPost> NewsPosts { get; }
void Save();
}
这是由我的 DB Context 类继承的:
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();
}
}
然后我想在控制器中使用它来向数据库添加新闻:
新闻控制器
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 引起的,但我不知道该怎么做。
你们能帮忙吗?
谢谢。
【问题讨论】:
-
接口是否有理由必须公开 IQueryable
而不是允许添加的类型? -
不,pluralsight 教程就是这样完成的。我想我需要更改类型,但哪些类型允许添加?这是我想不通的?
-
@Xenoxsis 将类型改为
IEnumerable
标签: asp.net entity-framework asp.net-mvc-4 iqueryable