Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6630521
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 25, 20262026-05-25T22:24:57+00:00 2026-05-25T22:24:57+00:00

I am currently having trouble with some some linq using EF code first. My

  • 0

I am currently having trouble with some some linq using EF code first. My current code works fine:

My database model

public class MyDatabase : DbContext
{
     public DbSet<Person> People { get; set; }
     public DbSet<Role> Roles { get; set; }
     public DbSet<Visit> Visits { get; set; }
}

public class Person
{
     public int PersonId { get; set; }
     public string Forename { get; set; }
     public string Surname { get; set; }   
}

public class Visit
{
     public int VisitId { get; set; }
     public string Name {get; set;}
     public int PersonId { get; set; }
     public string VisitStatus { get; set; }
     public virtual Person People { get; set; }  
     //There is a one to many relationship to person
}

public class Role
{
    public Role()
    {
       People = new HashSet<Person>();
    }

    [Key]
    public int RoleId { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Person> People { get; set; }
     //There is a many to many relationship to person
}

My query

public IEnumerable<VisitDetails> GetGuestVisiterList()
{
    using (var db = new MyDatabase())
    {
        return (from p in db.People
        where p.Roles.Any(a => a.Name == "Guest")
        select new GuestVisitDetails
            {
                PersonId = p.PersonId,
                Forename = p.Forename,
                Surname = p.Surname,
                NumberOfVisits = db.Visits.Count(v => v.PersonId == p.PersonId && v.VisitStatus != "Complete")
            }).ToList();

    }    
}

My View model

public class GuestVisitDetails
{
    public int PersonId { get; set; }
    public string Forename { get; set; }
    public string Surname { get; set; }
    public int NumberOfVisits { get; set; }
}

But when I try to use an interface for my database model so I can unit test, it get the following error:

Unable to create a constant value of type 'MyVisits.Data.Model.Visit'. Only primitive types ('such as Int32, String, and Guid') are supported in this context

My Datebase interface

public class MyDatabase : DbContext, IDolphinDatabase
{
     public IDbSet<Person> People { get; set; }
     public IDbSet<Role> Roles { get; set; }
     public IDbSet<Visit> Visits { get; set; }
}

public interface IMyDatabase : IDisposable
{
     public IDbSet<Person> People { get; set; }
     public IDbSet<Role> Roles { get; set; }
     public IDbSet<Visit> Visits { get; set; }
}

My new Query, I created a dbFactory to just get the IMyDatabase

public IEnumerable<VisitDetails> GetGuestVisiterList(int paperId)
{
    using (var db = _dbFactory.GetDatabase())
    {
        return (from p in db.People
                where p.Roles.Any(a => a.Name == "Guest")
                select new GuestVisitDetails
                 {
                     PersonId = p.PersonId,
                     Forename = p.Forename,
                     Surname = p.Surname,
                     NumberOfVisits = db.Visits.Count(v => v.PersonId == p.PersonId && v.VisitStatus != "Complete")
                 }).ToList();
    }    
}

I’ve found out that it is the ‘NumberOfVisits’ that is causing the problem but am unsure why or how to fix it.

As requested the stack trace

[NotSupportedException: Unable to create a constant value of type 'MyVisits.Data.Model.Visit'. Only primitive types ('such as Int32, String, and Guid') are supported in this context.]
System.Data.Objects.ELinq.ConstantTranslator.TypedTranslate(ExpressionConverter parent, ConstantExpression linq) +902
System.Data.Objects.ELinq.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) +54
System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) +110
System.Data.Objects.ELinq.<>c__DisplayClass77.<TypedTranslate>b__75(Expression e) +11
System.Linq.WhereSelectEnumerableIterator`2.MoveNext() +151
System.Data.Common.CommandTrees.ExpressionBuilder.Internal.EnumerableValidator`3.Validate(IEnumerable`1 argument, String argumentName, Int32 expectedElementCount, Boolean allowEmpty, Func`3 map, Func`2 collect, Func`3 deriveName) +237
System.Data.Common.CommandTrees.ExpressionBuilder.Internal.EnumerableValidator`3.Validate() +46
System.Data.Common.CommandTrees.ExpressionBuilder.Internal.ArgumentValidation.CreateExpressionList(IEnumerable`1 arguments, String argumentName, Boolean allowEmpty, Action`2 validationCallback) +142
System.Data.Common.CommandTrees.ExpressionBuilder.Internal.ArgumentValidation.ValidateNewCollection(IEnumerable`1 elements, DbExpressionList& validElements) +72
System.Data.Objects.ELinq.NewArrayInitTranslator.TypedTranslate(ExpressionConverter parent, NewArrayExpression linq) +121
System.Data.Objects.ELinq.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) +54
System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) +110
System.Data.Objects.ELinq.ConstantTranslator.TypedTranslate(ExpressionConverter parent, ConstantExpression linq) +520
System.Data.Objects.ELinq.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) +54
System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) +110
System.Data.Objects.ELinq.AggregateTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) +86
System.Data.Objects.ELinq.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod) +14
System.Data.Objects.ELinq.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) +102
System.Data.Objects.ELinq.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) +54
System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) +110
System.Data.Objects.ELinq.MemberInitTranslator.TypedTranslate(ExpressionConverter parent, MemberInitExpression linq) +310
System.Data.Objects.ELinq.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) +54
System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) +110
System.Data.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input) +80
System.Data.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input, DbExpressionBinding& binding) +88
System.Data.Objects.ELinq.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda) +85
System.Data.Objects.ELinq.SelectTranslator.Translate(ExpressionConverter parent, MethodCallExpression call) +37
System.Data.Objects.ELinq.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod) +14
System.Data.Objects.ELinq.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq) +102
System.Data.Objects.ELinq.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq) +54
System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq) +110
System.Data.Objects.ELinq.ExpressionConverter.Convert() +16
System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable`1 forMergeOption) +110
System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) +149
System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +44
System.Data.Entity.Internal.Linq.InternalQuery`1.GetEnumerator() +40
System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator() +40
System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +315
System.Linq.Enumerable.ToList(IEnumerable`1 source) +58
MyVisits.Business.<GetGuestVisiterList>c__Binding.Invoke(Object& instance, Arguments arguments, Object aspectArgs) in E:\Visual Studio\Projects\MyVisits_current\MyVisits.Business\VisitService.cs:459
PostSharp.Aspects.Internals.MethodInterceptionArgsImpl`1.Proceed() +23
MvcMiniProfiler.Aop.MiniProfilerAttribute.OnInvoke(MethodInterceptionArgs args) in E:\Visual Studio\Projects\MyVisits_current\MvcMiniProfiler.Aop\MiniProfilerAttribute.cs:17
MyVisits.Business.VisitService.GetGuestVisiterList() in :0
MyVisits.Web.Areas.RegionalAdministrator.Controllers.VisitController.EditVisitor() in E:\Visual Studio\Projects\MyVisits_current\MyVisits.Web\Areas\RegionalAdministrator\Controllers\VisitController.cs:85
lambda_method(Closure , ControllerBase , Object[] ) +101
System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) +17
System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +208
Castle.Proxies.ControllerActionInvokerProxy.InvokeActionMethod_callback(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27
Castle.Proxies.Invocations.ControllerActionInvoker_InvokeActionMethod.InvokeMethodOnTarget() +154
Castle.DynamicProxy.AbstractInvocation.Proceed() +56
Glimpse.Mvc3.Interceptor.InvokeActionMethodInterceptor.Intercept(IInvocation invocation) +336
Castle.DynamicProxy.AbstractInvocation.Proceed() +94
Castle.Proxies.ControllerActionInvokerProxy.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +214
System.Web.Mvc.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12() +55
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +263
System.Web.Mvc.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14() +19
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation) +263
System.Web.Mvc.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14() +19
System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +191
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343
System.Web.Mvc.Controller.ExecuteCore() +116
System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97
System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10
System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37
System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +12
System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +50
System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7
System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8920029
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184

Any help would be great

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-25T22:24:58+00:00Added an answer on May 25, 2026 at 10:24 pm

    First, you should change your entities, to support your relationships:

    public class Person
    {
         public int PersonId { get; set; }
         public string Forename { get; set; }
         public string Surname { get; set; } 
    
         // add a collection-reference to roles
         public virtual ICollection<Role> Roles { get; set; } 
    
         // add a collection-reference to visites
         public virtual ICollection<Visit> Visits { get; set; }  
    }
    

    public class Visit
    {
         public int VisitId { get; set; }
         public string Name {get; set;}
         public string VisitStatus { get; set; }
    
         public int PersonId { get; set; }
         public virtual Person People { get; set; }  
         //There is a one to many relationship to person
    }
    

    public class Role
    {
        public Role()
        {
           People = new HashSet<Person>();
        }
    
        [Key]
        public int RoleId { get; set; }
        public string Name { get; set; }
    
        public virtual ICollection<Person> People { get; set; }
         //There is a many to many relationship to person
    }
    

    Your problem resolved now. But you can also change the query like this:

    public IEnumerable<VisitDetails> GetGuestVisiterList(int paperId)
    {
        using (var db = _dbFactory.GetDatabase())
        {
            return (from p in db.People
                    where p.Roles.Any(a => a.Name == "Guest")
                    select new GuestVisitDetails
                     {
                         PersonId = p.PersonId,
                         Forename = p.Forename,
                         Surname = p.Surname,
                         NumberOfVisits = p.Visits.Count(v => v.VisitStatus != "Complete")
                     }).ToList();
        }    
    }
    

    Let me know if you have any problem or questions or need clarifications on any part. Cheers.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am currently having trouble with the following (here is some sample code first):
I am currently having some trouble using my client side validation. I am using
I'm having some trouble using constraints correctly. I have three tables, 'item', 'store' and
I'm having some trouble with the output of a DateTime value. My computer's current
I'm having trouble understanding some web part communication code, and how to make it
I need to parse an XLIFF file using C#, but I'm having some trouble.
I am having some trouble with a linq query I am trying to write.
I'm having some trouble setting up a htaccess file. Currently I have 15 domains
I am currently developing a WebGL-based application, and I am having some trouble with
I'm having some trouble deleting an item from a collection inside a model when

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.