c# - tutorial - entity framework visual studio 2017
No se puede crear un valor constante de tipo ''System.Object'' en Entity Framework (4)
@Ladislav le respondió la respuesta correcta ( .Where(tender => tender.HasAdminApproved)
), pero es posible que se pregunte por qué recibe este mensaje.
Estás intentando llamar a System.Boolean.Equals(Object obj)
. Así que estás boxeando la true
constante. Y L2E, como dice el mensaje, no tiene soporte para una constante de un tipo no primitivo como System.Object
. De ahí el error.
Tengo una tabla llamada UserTenders
tiene una relación de varios a uno con la tabla aspnet_Membership
.
Estoy usando EntityFramework 4.0 y cuando intento algo como esto, se produce un error.
var tenders = ctx.UserTenders
.Where(tender => tender.HasAdminApproved.Equals(true))
.ToList();
El error es
System.NotSupportedException
No se puede crear un valor constante de tipo ''System.Object''.
En este contexto, solo se admiten tipos primitivos (''como Int32, String y Guid'').
Este fragmento de código a continuación funciona.
var tenders = ctx.UserTenders.ToList();
¿Qué podría estar mal en mi código? Siento que me falta algo muy trivial.
Me gustaría filtrar todas aquellas filas que tienen el campo de bit
HasAdminApproved
como true
Solo quería señalar, también podría haber usado tender.HasAdminApproved.HasValue.Equals (true)) ... esto funciona cuando bool permite nulos
Tratar de reemplazar
.Where(tender => tender.HasAdminApproved.Equals(true))
Con:
.Where(tender => tender.HasAdminApproved == true)
¿O como lo sugirió previamente @Ladislav Mrnka si su campo es bool?
.Where(tender => tender.HasAdminApproved)
Tuve la misma excepción causada por un problema diferente: un carácter frente a una cadena utilizada como constante. Mi selección se veía así:
from p in Person
select new Foo
{
FullName = p.FirstName + '' '' + p.LastName
}
Los condicionales booleanos que tenía en otra parte de la consulta (es decir, "donde p.IsActive") funcionaron bien. Tuve que cambiar a utilizar una cadena:
from p in Person
select new Foo
{
FullName = p.FirstName + " " + p.LastName
}
Obviamente, esta no es la respuesta a la pregunta del OP, pero no pude encontrar una pregunta similar con el problema de caracteres / cadenas, así que quería publicarlo para el beneficio de otros.