Link to home
Start Free TrialLog in
Avatar of Explorer JK
Explorer JK

asked on

LINQ Complied queries giving error : There is no implicit reference conversion from 'Chinook.ChinookModel' to 'System.Data.Entity.Core.Objects.ObjectContext'.

Hi,

I have a class" Employee" and DBcontext : ChinookModel (.Net 4.5) , however when I try to create compiled query it gives the following error : ( Any help is appreciated, Thanks in advance )

Error
1
The type 'Chinook.ChinookModel' cannot be used as type parameter 'TArg0' in the generic type or method 'System.Data.Entity.Core.Objects.CompiledQuery.Compile<TArg0,TArg1,TResult>(System.Linq.Expressions.Expression<System.Func<TArg0,TArg1,TResult>>)'. There is no implicit reference conversion from 'Chinook.ChinookModel' to 'System.Data.Entity.Core.Objects.ObjectContext'.
C:\Users\Bond009\documents\visual studio 2013\Projects\Chinook\Chinook\DAL\Queries.cs
18
12
Chinook
I am using the following code to create LINQ complied query:

namespace Chinook
{
    public class StaticQueries
    {
        static readonly Func<ChinookModel, int, IQueryable<Employee>> getemployeebyid =
           CompiledQuery.Compile<ChinookModel, int, IQueryable<Employee>>
           ((ctx, tempid) => from c in ctx.Employees
                             where c.EmployeeId == tempid
                             select c);
    }
}

====================Employee Class ======================

    [Table("Employee")]
    public partial class Employee
    {
        public Employee()
        {
            Customers = new HashSet<Customer>();
            Employee1 = new HashSet<Employee>();
        }

        public int EmployeeId { get; set; }

        [Required]
        [StringLength(20)]
        public string LastName { get; set; }

        [Required]
        [StringLength(20)]
        public string FirstName { get; set; }

        [StringLength(30)]
        public string Title { get; set; }

        public int? ReportsTo { get; set; }

        public DateTime? BirthDate { get; set; }

        public DateTime? HireDate { get; set; }

        [StringLength(70)]
        public string Address { get; set; }

        [StringLength(40)]
        public string City { get; set; }

        [StringLength(40)]
        public string State { get; set; }

        [StringLength(40)]
        public string Country { get; set; }

        [StringLength(10)]
        public string PostalCode { get; set; }

        [StringLength(24)]
        public string Phone { get; set; }

        [StringLength(24)]
        public string Fax { get; set; }

        [StringLength(60)]
        public string Email { get; set; }

        public virtual ICollection<Customer> Customers { get; set; }

        public virtual ICollection<Employee> Employee1 { get; set; }

        public virtual Employee Employee2 { get; set; }
    }

=====================ChinookModel - Dbcontext =====================

public partial class ChinookModel : DbContext
    {
        public ChinookModel()
            : base("name=Chinook")
        {
        }

        public virtual DbSet<Album> Albums { get; set; }
        public virtual DbSet<Artist> Artists { get; set; }
        public virtual DbSet<Customer> Customers { get; set; }
        public virtual DbSet<Employee> Employees { get; set; }
        public virtual DbSet<Genre> Genres { get; set; }
        public virtual DbSet<Invoice> Invoices { get; set; }
        public virtual DbSet<InvoiceLine> InvoiceLines { get; set; }
        public virtual DbSet<MediaType> MediaTypes { get; set; }
        public virtual DbSet<Playlist> Playlists { get; set; }
        public virtual DbSet<Track> Tracks { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Artist>()
                .HasMany(e => e.Albums)
                .WithRequired(e => e.Artist)
                .WillCascadeOnDelete(false);

            modelBuilder.Entity<Customer>()
                .HasMany(e => e.Invoices)
                .WithRequired(e => e.Customer)
                .WillCascadeOnDelete(false);

            modelBuilder.Entity<Employee>()
                .HasMany(e => e.Customers)
                .WithOptional(e => e.Employee)
                .HasForeignKey(e => e.SupportRepId);

            modelBuilder.Entity<Employee>()
                .HasMany(e => e.Employee1)
                .WithOptional(e => e.Employee2)
                .HasForeignKey(e => e.ReportsTo);
        }
        public int ThisID { get; set; }
    }
======================================================
ASKER CERTIFIED SOLUTION
Avatar of Karrtik Iyer
Karrtik Iyer
Flag of India image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
May I please know why is this a grade B, I have explained the reason why error was coming and what are the possible way to solve it?
Avatar of Explorer JK
Explorer JK

ASKER

My bad ....I am new to this grading.. system....please change to A... Thanks Karrtik.