Cannot convert implicitly a type 'System.Linq.IQueryable' into 'Microsoft.EntityFrameworkCore.Query.IIncludableQueryable'

asked7 years ago
last updated5 years ago
viewed6.8k times
Up Vote12Down Vote

When I am developing my ASP.Net App, the following error was displayed.

Error CS0266 Cannot convert implicitly a type 'System.Linq.IQueryable' into 'Microsoft.EntityFrameworkCore.Query.IIncludableQueryable' There is an explicit conversion (check if you lack a cast) urlapp12 C:\Users\mjkpt\source\repos\teststage\urlapp12\urlapp12\Controllers\TagsController.cs 37 active

The captured screenshot of the error

t.Urlid and Urlid are both int.

The code including the error is the following:

//int id, [Bind("BlogId,Userid,Url,Title")] Blog blog
        // GET: Tags
//        public async Task<IActionResult> Index()
        public async Task<IActionResult> Index(int id, [Bind("Urlid,Userid,UrlStr,Title")] Url blog, int Urlid)
        {
            /*
            return View(await _context.Tag.ToListAsync());
            */
            var blogging02Context = _context.Tag.Include(t => t.Blog);

            if (!string.IsNullOrEmpty(Urlid.ToString()))
            {
                blogging02Context = blogging02Context.Where(t => t.Urlid == Urlid);
            }

            ViewBag.Urlid = Urlid;
            return View(await blogging02Context.ToListAsync());

//            return View (await _context.Tag.ToListAsync());
        }

The Url model is the following:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace urlapp12.Models
{
    public partial class Url
    {
        public Url()
        {
            Post = new HashSet<Post>();
        }

        [Key]
        public int Urlid { get; set; }
        public string UserId { get; set; }
        public string UrlStr { get; set; }
        public string Title { get; set; }

        public string CreatedBy { get; set; }
        public string CreatedBy_UserName { get; set; }
        [System.ComponentModel.DataAnnotations.Schema.Column(TypeName = "datetime2")]
        public DateTime CreatedAt_UtcDt { get; set; }
        [System.ComponentModel.DataAnnotations.Schema.Column(TypeName = "datetime2")]
        public DateTime CreatedAt_LocalDt { get; set; }

        public string LastUpdatedBy { get; set; }
        public string LastUpdatedBy_UserName { get; set; }
        [System.ComponentModel.DataAnnotations.Schema.Column(TypeName = "datetime2")]
        public DateTime LastUpdatedAt_UtcDt { get; set; }
        [System.ComponentModel.DataAnnotations.Schema.Column(TypeName = "datetime2")]
        public DateTime LastUpdatedAt_LocalDt { get; set; }

        public virtual ICollection<Tag> Tag { get; set; }
        public virtual ICollection<BlogIUDSqlHistory> BlogIUDSqlHistory { get; set; }
        public ICollection<Post> Post { get; set; }
        /*
        public List<Tag> Tag { get; set; }
        public List<Post> Post { get; set; }
        */
    }
}

The Tag model is the following:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Threading.Tasks;

namespace urlapp12.Models
{
    public class Tag
    {
        [Key]
        public int TagId { get; set; }
        public int DispOrderNbr { get; set; }
        public string tagItem { get; set; }
        public int Urlid { get; set; }

        public string CreatedBy { get; set; }
        public string CreatedBy_UserName { get; set; }
        [System.ComponentModel.DataAnnotations.Schema.Column(TypeName = "datetime2")]
        public DateTime CreatedAt_UtcDt { get; set; }
        [System.ComponentModel.DataAnnotations.Schema.Column(TypeName = "datetime2")]
        public DateTime CreatedAt_LocalDt { get; set; }

        public string LastUpdatedBy { get; set; }
        public string LastUpdatedBy_UserName { get; set; }
        [System.ComponentModel.DataAnnotations.Schema.Column(TypeName = "datetime2")]
        public DateTime LastUpdatedAt_UtcDt { get; set; }
        [System.ComponentModel.DataAnnotations.Schema.Column(TypeName = "datetime2")]
        public DateTime LastUpdatedAt_LocalDt { get; set; }

        [System.ComponentModel.DataAnnotations.Schema.ForeignKey("Urlid")]
        public Url Blog { get; set; }
    }
}

(2018-05-19 18:17 add) I have tried Mohsin Mehmood code, and unfortunately other errors occured.

Error CS0266 Cannot cast implicitly Type 'System.Linq.IQueryable' into 'Microsoft.EntityFrameworkCore.DbSet'. There is an explicit cast. (Are you missing cast?) C:\Users\mjkpt\source\repos\teststage\urlapp12\urlapp12\Controllers\TagsController.cs 45 ActiveError CS0266 Cannot cast implicitly Type 'Microsoft.EntityFrameworkCore.Query.IIncludableQueryable' into 'Microsoft.EntityFrameworkCore.DbSet'. There is an explicit cast. (Are you missing cast?) C:\Users\mjkpt\source\repos\teststage\urlapp12\urlapp12\Controllers\TagsController.cs 45 Active

(2018-05-19 18:43 Added)

Thank you very much user1672994 :It was necessary to make a little change like the following, but it is not a big problem:

var blogging02Context = _context.Tag.Include(t => t.Blog).Where(t => t.Urlid == Urlid));
var blogging02Context = _context.Tag.Include(t => t.Blog).Where(t => t.Urlid == Urlid);