Unable to create a constant value of type 'System.Object' in Entity Framework

后端 未结 4 461
旧巷少年郎
旧巷少年郎 2020-12-11 14:45

I have a table named UserTenders having many-to-one relationship with aspnet_Membership table.
I am using EntityFramework 4.0 and when I try so

相关标签:
4条回答
  • 2020-12-11 15:06

    Just wanted to point out, you could have also used tender.HasAdminApproved.HasValue.Equals(true))... this works when bool allows nulls

    0 讨论(0)
  • 2020-12-11 15:14

    I had the same exception caused by a different problem: a char versus a string used as a constant. My select looked like this:

    from p in Person
    select new Foo
    {
      FullName = p.FirstName + ' ' + p.LastName
    }
    

    The boolean conditionals I had elsewhere in the query (i.e. "where p.IsActive") worked fine. I had to switch to using a string:

    from p in Person
    select new Foo
    {
      FullName = p.FirstName + " " + p.LastName
    }
    

    This obviously is not the answer to the OP's question, but I was unable to find a similar question with the char/string issue so I wanted to post it for others' benefit.

    0 讨论(0)
  • 2020-12-11 15:29

    Try replacing

    .Where(tender => tender.HasAdminApproved.Equals(true))
    

    With:

    .Where(tender => tender.HasAdminApproved == true)
    

    Or as previously suggested by @Ladislav Mrnka if your field is bool?

    .Where(tender => tender.HasAdminApproved)
    
    0 讨论(0)
  • 2020-12-11 15:30

    @Ladislav told you the correct answer (.Where(tender => tender.HasAdminApproved)), but you might wonder why you get this message.

    You're trying to call System.Boolean.Equals(Object obj). So you're boxing the constant true. And L2E, as the message says, has no support for a const of a non-primitive type like System.Object. Hence the error.

    0 讨论(0)
提交回复
热议问题