Linq到实体[无法创建类型为';…&';]的常量值]

Linq到实体[无法创建类型为';…&';]的常量值],linq,entities,Linq,Entities,我在linq查询中遇到了困难。见下文 var userHelper = new UserHelper(dbContext); var currentUser = (from u in dbContext.Users where u.UserID == request.VTIUser.UserID select u).SingleOrDefault(); var userIds = (from u in dbC

我在linq查询中遇到了困难。见下文

var userHelper = new UserHelper(dbContext);

var currentUser = (from u in dbContext.Users
                     where u.UserID == request.VTIUser.UserID
                     select u).SingleOrDefault();

var userIds = (from u in dbContext.Users
               from r in dbContext.OrgRanges
               select u.UserID).ToList();
只有一个from子句,它就可以正常工作

异常消息

at System.Data.Objects.ELinq.ExpressionConverter.ConstantTranslator.TypedTranslate(ExpressionConverter parent, ConstantExpression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)  
at System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.NewArrayInitTranslator.<>c__DisplayClass77.<TypedTranslate>b__75(Expression e)
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()   
at 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)   
at System.Data.Common.CommandTrees.ExpressionBuilder.Internal.EnumerableValidator`3.Validate()  
at System.Data.Common.CommandTrees.ExpressionBuilder.Internal.ArgumentValidation.CreateExpressionList(IEnumerable`1 arguments, String argumentName, Boolean allowEmpty, Action`2 validationCallback)
at System.Data.Common.CommandTrees.ExpressionBuilder.Internal.ArgumentValidation.ValidateNewCollection(IEnumerable`1 elements, DbExpressionList& validElements)
at System.Data.Objects.ELinq.ExpressionConverter.NewArrayInitTranslator.TypedTranslate(ExpressionConverter parent, NewArrayExpression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.ConstantTranslator.TypedTranslate(ExpressionConverter parent, ConstantExpression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input)
at System.Data.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input, DbExpressionBinding& binding)
at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda)
at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SelectManyTranslator.Translate(ExpressionConverter parent, MethodCallExpression call)
at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod)
at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.Convert()
at System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable`1 forMergeOption)
at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
at System.Data.Entity.Internal.Linq.InternalQuery`1.GetEnumerator()
at System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at CrewSheetWebService.Controllers.UsersController.GetUsers() in c:\Users\patrich.ISCDEVELOPMENT\Documents\Visual Studio 2010\WebSites\St Paul\App_Code\WebAPI\Controllers\UsersController.cs:line 53
at lambda_method(Closure , Object , Object[] )
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass13.<GetExecutor>b__c(Object instance, Object[] methodParameters)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.<>c__DisplayClass5.<ExecuteAsync>b__4()
at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancellationToken)  
无法创建“VTI.Entities.OrgRange”类型的常量值。在此上下文中仅支持基本类型(“如Int32、String和Guid”)

堆栈跟踪

at System.Data.Objects.ELinq.ExpressionConverter.ConstantTranslator.TypedTranslate(ExpressionConverter parent, ConstantExpression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)  
at System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.NewArrayInitTranslator.<>c__DisplayClass77.<TypedTranslate>b__75(Expression e)
at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()   
at 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)   
at System.Data.Common.CommandTrees.ExpressionBuilder.Internal.EnumerableValidator`3.Validate()  
at System.Data.Common.CommandTrees.ExpressionBuilder.Internal.ArgumentValidation.CreateExpressionList(IEnumerable`1 arguments, String argumentName, Boolean allowEmpty, Action`2 validationCallback)
at System.Data.Common.CommandTrees.ExpressionBuilder.Internal.ArgumentValidation.ValidateNewCollection(IEnumerable`1 elements, DbExpressionList& validElements)
at System.Data.Objects.ELinq.ExpressionConverter.NewArrayInitTranslator.TypedTranslate(ExpressionConverter parent, NewArrayExpression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.ConstantTranslator.TypedTranslate(ExpressionConverter parent, ConstantExpression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input)
at System.Data.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input, DbExpressionBinding& binding)
at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda)
at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SelectManyTranslator.Translate(ExpressionConverter parent, MethodCallExpression call)
at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, SequenceMethod sequenceMethod)
at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter parent, Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.Convert()
at System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable`1 forMergeOption)
at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
at System.Data.Entity.Internal.Linq.InternalQuery`1.GetEnumerator()
at System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable<TResult>.GetEnumerator()
at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
at CrewSheetWebService.Controllers.UsersController.GetUsers() in c:\Users\patrich.ISCDEVELOPMENT\Documents\Visual Studio 2010\WebSites\St Paul\App_Code\WebAPI\Controllers\UsersController.cs:line 53
at lambda_method(Closure , Object , Object[] )
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass13.<GetExecutor>b__c(Object instance, Object[] methodParameters)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments)
at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.<>c__DisplayClass5.<ExecuteAsync>b__4()
at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancellationToken)  
at System.Data.Objects.elink.ExpressionConverter.ConstantTranslator.TypedTranslate(ExpressionConverter父级,ConstantExpression linq)
位于System.Data.Objects.Elink.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter父级,表达式linq)
位于System.Data.Objects.Elink.ExpressionConverter.TranslateExpression(表达式linq)
在System.Data.Objects.Elink.ExpressionConverter.NewArrayInitTranslator.c__DisplayClass77.b__75(表达式e)中
在System.Linq.Enumerable.WhereSelectEnumerableInterator`2.MoveNext()中
位于System.Data.Common.CommandTrees.ExpressionBuilder.Internal.EnumerableValidator`3.Validate(IEnumerable`1参数、String argumentName、Int32 expectedElementCount、Boolean allowEmpty、Func`3映射、Func`2 collect、Func`3 deriveName)
位于System.Data.Common.CommandTrees.ExpressionBuilder.Internal.EnumerableValidator`3.Validate()
位于System.Data.Common.CommandTrees.ExpressionBuilder.Internal.ArgumentValidation.CreateExpressionList(IEnumerable`1参数、String argumentName、Boolean allowEmpty、Action`2 validationCallback)
位于System.Data.Common.CommandTrees.ExpressionBuilder.Internal.ArgumentValidation.ValidateNewCollection(IEnumerable`1元素、DbExpressionList和validElements)
位于System.Data.Objects.Elink.ExpressionConverter.NewArrayInitTranslator.TypedTranslate(ExpressionConverter父级,NewArrayExpression linq)
位于System.Data.Objects.Elink.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter父级,表达式linq)
位于System.Data.Objects.Elink.ExpressionConverter.TranslateExpression(表达式linq)
位于System.Data.Objects.Elink.ExpressionConverter.ConstantTranslator.TypedTranslate(ExpressionConverter父级,ConstantExpression linq)
位于System.Data.Objects.Elink.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter父级,表达式linq)
位于System.Data.Objects.Elink.ExpressionConverter.TranslateExpression(表达式linq)
位于System.Data.Objects.elink.ExpressionConverter.TranslateLambda(LambdaExpression lambda,DbExpression input)
位于System.Data.Objects.eliq.ExpressionConverter.TranslateLambda(LambdaExpression lambda、DbExpression input、DbExpressionBinding&binding)
位于System.Data.Objects.Elink.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter父级、MethodCallExpression调用、DbExpression和source、DbExpressionBinding和sourceBinding、DbExpression和lambda)
在System.Data.Objects.Elink.ExpressionConverter.MethodCallTranslator.SelectManyTranslator.Translate中(ExpressionConverter父级,MethodCallExpression调用)
位于System.Data.Objects.Elink.ExpressionConverter.MethodCallTranslator.SequenceMethodTranslator.Translate(ExpressionConverter父级,MethodCallExpression调用,SequenceMethod SequenceMethod)
位于System.Data.Objects.Elink.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter父级,MethodCallExpression linq)
位于System.Data.Objects.Elink.ExpressionConverter.TypedTranslator`1.Translate(ExpressionConverter父级,表达式linq)
位于System.Data.Objects.Elink.ExpressionConverter.TranslateExpression(表达式linq)
在System.Data.Objects.Elink.ExpressionConverter.Convert()中
位于System.Data.Objects.elink.elinkQueryState.GetExecutionPlan(可为null `1 forMergeOption)
位于System.Data.Objects.ObjectQuery`1.GetResults(可为null`1 forMergeOption)
位于System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable.GetEnumerator()
位于System.Data.Entity.Internal.Linq.InternalQuery`1.GetEnumerator()处
位于System.Data.Entity.Infrastructure.DbQuery`1.System.Collections.Generic.IEnumerable.GetEnumerator()
位于System.Collections.Generic.List`1..ctor(IEnumerable`1集合)
at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
在c:\Users\patrich.ISCDEVELOPMENT\Documents\Visual Studio 2010\WebSites\St Paul\App\u Code\WebAPI\Controllers\Users controller.cs中的CrewSheetWebService.Controllers.Users()处:第53行
在lambda_方法(闭包、对象、对象[])
在System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.c__DisplayClass13.b__c(对象实例,对象[]方法参数)
位于System.Web.Http.Controller.ReflectedHttpActionDescriptor.ActionExecutor.Execute(对象实例,对象[]参数)
在System.Web.Http.Controllers.ReflectedHttpActionDescriptor.c_uuDisplayClass5.b_uuu4()中
在System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 Func,CancellationToken CancellationToken)
用户模型

  [Table("tblUsers")]
  public class User
  {
    [Key]
    public int UserID { get; set; }

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

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

    [StringLength(6)]
    public string OrgLevel1 { get; set; }

    [StringLength(6)]
    public string OrgLevel2 { get; set; }

    [StringLength(6)]
    public string OrgLevel3 { get; set; }

    [StringLength(200)]
    public string EmpName { get; set; }

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

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

    public DateTime HireDate { get; set; }

    [StringLength(50)]
    public string Password { get; set; }

    public int? Supervisor { get; set; }

    public int? Role { get; set; }

    public int? PayCycleID { get; set; }

    public int DocumentGroupID { get; set; }

    public DateTime EffectedDate { get; set; }

    public DateTime ExpirationDate { get; set; }

    public int? GroupID { get; set; }

    public int? EmpPosition { get; set; }

    public int? EmpStatus { get; set; }

    public int PunchID { get; set; }

    [ForeignKey("PunchID")]
    public virtual PunchProfile PunchProfile { get; set; }

    [StringLength(50)]
    public string ADUserID { get; set; }

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

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

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

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

    public decimal? HourlyRate { get; set; }

    public int? PayType { get; set; }

    public int? FLSAProfile { get; set; }

    public int? FMLVProfile { get; set; }

    public int? PercentFullTime { get; set; }

    public DateTime? LastModified { get; set; }

    public virtual ICollection<UserJob> UserJobs { get; set; }

    public virtual ICollection<UserSkill> UserSkills { get; set; }

    public virtual ICollection<UserSchedule> UserSchedules { get; set; }

    public virtual ICollection<UserRange> Ranges { get; set; }

    public static UserSchedule GetCurrentUserSchedule(IList<UserSchedule> userScheds)
    {
      return userScheds.Where(us => DateTime.Now.IsBetween(us.StartDate, us.EndDate)).FirstOrDefault();
    }

    public User()
    {
    }

    public bool HasRole(int role)
    {
      return (Role & role) == role;
    }
  }
[表(“tblUsers”)]
公共类用户
{
[关键]
public int UserID{get;set;}
[条次建议修正案(10)]
公共字符串编号{get;set;}
[条次建议修正案(10)]
公共字符串约会{get;set;}
[第(6)款]
公共字符串OrgLevel1{get;set;}
[第(6)款]
公共字符串OrgLevel2{get;set;}
[第(6)款]
公共字符串OrgLevel3{get;set;}
[长度(200)]
公共字符串EmpName{get;set;}
[长度(200)]
公共字符串电子邮件{get;set;}
[第15段]
公用字符串电话{get;set;}
公共日期时间HireDate{get;set;}
[长度(50)]
公共字符串密码{get;set;}
公共int?主管{get;set;}
公共int?角色{get;set;}
public int?PayCycleID{get;set;}
public int DocumentGroupID{get;set;}
公共日期时间生效日期{get;set;}
公共日期时间过期日期{get;set;}
public int?GroupID{get;set;}
公共int?EmpPosition{get;set;}
公共int?EmpStatus{get;set;}
PunchID{get;s公共点
var user = GetUserById(42);

var orders = context.Orders.Where(order => order.Customer == customer);
var user = GetUserById(42);

var orders = context.Orders.Where(order => order.Customer.Id == customer.Id);