繁体   English   中英

ASP.NET MVC4:IQueryable不包含“添加”的定义

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM