无法将类型'System.Linq.IQueryable隐式转换为System.Data.Entity.DbSet<>

时间:2013-05-24 19:18:59

标签: asp.net webforms

我尝试运行代码时收到以下错误。我还没有设法解决它,请帮助:

编辑:标记*失败的地方。 >

public IQueryable<Video> GetVideos([QueryString("id")] int? categorieId)
{
    var _db = new TeleviziuneAcademicaAspSilverlight.Models.VideoContext();
    IQueryable<Video> query = *_db.Videos;*
    if (categorieId.HasValue && categorieId > 0)
    {
        query = query.Where(v => v.CategorieID == categorieId);
    }

    return query;

2 个答案:

答案 0 :(得分:1)

更改

IQueryable<Video> query =

IQueryable<Appname.Models.Video> query =

你的错误的原因是你有两次类型视频定义,并且由于使用短类型名称,你不小心引用了你应该的视频。

同样在方法的返回值

中更改它
public IQueryable<Appname.Models.Video> GetVideos( ... )

答案 1 :(得分:0)

您似乎有两个名为Video的课程。如果你需要两者,你需要在返回声明之前从一个投射到另一个:

return query.Select(dbVideo => new Appname.Video()
    {
        Prop1 = dbVideo.Prop1,
        Prop2 = dbVideo.Prop2,
        // etc.
    });

如果您这样做,可能需要将返回类型更改为IEnumerable<>

如果您可以使用Appname.Models.Video,请在方法签名和方法正文中将IQueryable<Video>更改为IQueryable<Appname.Models.Video>