Este es probablemente el mayor problema de pérdida de tiempo que he pasado horas resolviendo durante mucho tiempo.
var db = new hublisherEntities();
establishment_brands est = new establishment_brands();
est.brand_id = 1;
est.establishment_id = 1;
est.price = collection["price"];
est.size = collection["size"];
db.establishment_brands.Add(est);
db.SaveChanges();
Esto me da un error de
El valor no puede ser nulo. Nombre del parámetro: fuente
rastro de
[ArgumentNullException: el valor no puede ser nulo. Nombre del parámetro: fuente] System.Linq.Enumerable.Any (IEnumerable
1 source, Func
2 predicate) +4083335 System.Data.Entity.Internal.InternalContext.WrapUpdateException (UpdateException updateException) +87
System.Data.Entity.Internal.InternalContext.SaveChanges () + 193
System.Data.Entity.Internal.LazyInternalContext.SaveChanges () +33
System.Data.Entity.DbContext.SaveChanges () +20 ... ...
Solo quiero agregar una entidad a la tabla. El ORM es EF.
c#
asp.net-mvc
entity-framework
danielovich
fuente
fuente
Respuestas:
Tuve este hace un tiempo, y la respuesta no es necesariamente lo que esperarías. Este mensaje de error a menudo aparece cuando la cadena de conexión es incorrecta.
Supongo que necesitarás algo como esto:
Lo que sucede es que está buscando una fuente de datos en el lugar equivocado; Entity Framework lo especifica de forma ligeramente diferente. Si publica su cadena de conexión y configuración de EF, entonces podemos verificar.
fuente
En algún lugar dentro de la DbContext es un valor que es
IEnumerable
y se consulta conAny()
(oWhere()
oSelect()
o cualquier otro LINQ-método), pero este valor esnull
.Averigüe si realiza una consulta (en algún lugar fuera de su código de ejemplo) donde está utilizando un método LINQ, o si utilizó un
IEnumerable
parámetro como NULL.fuente
.Where()
, todavía estabanull
.Mi razón era diferente al resto aquí, así que pensé en publicarlo para cualquier otra persona que pudiera tener este problema.
Estaba llamando a Count en una instancia de DbSet con un filtro de nulo, es decir
Descubrí que pasar nulo aquí estaba causando el error, así que ahora llamo al método sin parámetros si el filtro es nulo:
Esto solucionó el problema para mí. Esto también puede ser un problema para cualquier otro método en DbSet.
fuente
Acabo de recibir este error exacto en .Net Core 2.2 Entity Framework porque no tenía el
set;
de miDbContext
gusto:cambiado a:
Sin embargo, no mostró la excepción hasta que intenté usar una consulta linq con
Where()
ySelect()
como otros habían mencionado anteriormente.Estaba tratando de configurar el
DbSet
como solo lectura. Seguiré intentando...fuente
solo como FYI, alguien puede encontrarlo útil. Estuve persiguiendo mi cola por este error casi 2 días y siempre estaba pensando en algo grande y buscando las clases que podrían ser el problema y finalmente encontré un problema muy estúpido y estaba en mi código de marcado (HTML) en mypage.ascx . el problema fue que tengo un
<asp:EntityDataSource>
y esto tiene una propiedad de inclusión y tengo algunas otras tablas enumeradas aquí y, por error, había una tabla que se eliminó de la base de datos recientemente y nunca me di cuenta y regresó nulo con otras entidades. Acabo de eliminar la estúpida tabla de la lista de inclusión y estoy listo. Espero que esto pueda ayudar a alguien.fuente
En caso de que alguien más termine aquí con mi problema con una configuración de DB First Entity Framework.
En pocas palabras, necesitaba sobrecargar el constructor de Entidades para aceptar una cadena de conexión, la razón es la capacidad de usar el contenedor de inyección de dependencia Asp.Net Core que extrae la cadena de conexión de appsettings.json, en lugar de obtenerla mágicamente de App.config archivo al llamar al constructor sin parámetros.
Olvidé agregar las llamadas para inicializar mis DbSets en la nueva sobrecarga. Entonces, el constructor sin parámetros generado automáticamente se parecía a esto:
Y mi nueva sobrecarga se veía así:
La solución fue agregar esos inicializadores de los que se ocupa el código generado automáticamente, un simple paso perdido:
Esto realmente me dejó sin aliento porque algunas llamadas en nuestro repositorio que usaron el DbContext funcionaron bien (las que no necesitaban esos DBSets inicializados), y las otras arrojaron el error de tiempo de ejecución descrito en el OP.
fuente
Asegúrese de inyectar el repositorio en el constructor del servicio. Eso lo resolvió para mí. :: golpea la frente ::
fuente
Esta excepción se devolverá si intenta contar valores en una colección nula.
Por ejemplo, lo siguiente funciona cuando los errores no son nulos, sin embargo, si los errores son nulos, el valor no puede ser nulo. Nombre del parámetro: se produce una excepción de origen .
Esta excepción se puede evitar comprobando si hay nulo.
fuente
Resuelto con la siguiente solución
edmx
archivo, seleccione Abrir con, editor XMLedmx:StorageModels
elementoDefiningQuery
completostore:Schema="dbo"
aSchema="dbo"
(si existe)store:Name
propiedadfuente
Podría ser tan tonto como en mi caso donde savechanges estaba fallando porque la base de datos no tenía claves foráneas y se agregaron asociaciones a las tablas EDM. Agregué claves foráneas en el DB y regenere EDM para una solución.
Los errores que estaba viendo son los siguientes: Caso 1 -> cuando uso DBContext para EDM Mensaje = El valor no puede ser nulo. Nombre del parámetro: fuente en System.Linq.Enumerable.Any [TSource] (IEnumerable
1 source, Func
2 predicate)Caso 2 -> cuando se utiliza ObjectContext para EDM Mensaje = No se puede actualizar el EntitySet 'Contact' porque tiene un DefiningQuery y no existe ningún elemento en el elemento para admitir la operación actual.
(Solo quería tirarlo allí en caso de que ayude a alguien).
fuente
En MVC, la pantalla Ver llama al método que está en Controller o Repository.cs y asigna el valor de retorno a cualquier control en CSHTML pero ese método no está implementado en .cs / controller, luego CSHTML arrojará la excepción del parámetro NULL
fuente
Recibí este error cuando tenía un tipo no válido para una propiedad de entidad.
Cuando eliminé la propiedad, el error dejó de ocurrir.
fuente
En mi caso, el problema apareció al configurar la aplicación web en IIS. Cuando se activó el comando de actualización en cualquier registro, se generó este error.
Fue un problema de permiso en App_Data que se configuró en solo lectura. Haga clic con el botón derecho en la carpeta, desactive la casilla de verificación Solo lectura y ya está. Por cierto, para fines de prueba, estaba usando la base de datos localdb que estaba en la carpeta App_Data.
fuente
Mi error fue olvidar agregar .ThenInclude (s => s.SubChildEntities) en el padre .Include (c => c.SubChildEntities) a la acción del controlador al intentar llamar a SubChildEntities en la vista Razor.
Cabe señalar que IntelliSense de Visual Studio 2017 Community no recoge el objeto SubChildEntities en la expresión lambda en .ThenInclude (). Sin embargo, se compila y ejecuta con éxito.
fuente
Sé que esto está muy lejos del año 2013 de la pregunta, pero este síntoma puede aparecer si no tiene habilitada la carga diferida al migrar una aplicación ASP.NET 5 a ASP.NET Core y luego intentar actualizar a Entity Framework Core 2.x (de EF 6). Entity Framework Core ha trasladado la compatibilidad del proxy de carga diferida a un paquete separado , por lo que debe instalarlo.
Esto es particularmente cierto si todo lo que ha cargado es un paquete de Entity Framework Core Sql Server (que activa Entity Framework muy bien).
Después de instalar el paquete proxies, entonces, como dicen los documentos, invoque
.UseLazyLoadingProxies()
en el generador de opciones DbContext (en su sección de configuración DI de inicio, o donde configure su DbContext), y la propiedad de navegación que arrojó la excepción anterior dejará de arrojarlo, y funcionará como solía Entity Framework 6.fuente
Tuve el mismo problema con XUnit. El problema fue con la conexión de mi base de datos. Verifique que su cadena de conexión sea correcta o no.
fuente
Y, en mi caso, defino por error mis dos columnas diferentes como identidades en las configuraciones de DbContext como a continuación,
Cuando lo corrijo como a continuación,
También me he librado de este error.
fuente
Tome una fila en la base de datos y haga que toda la columna sea nula en esa fila como esta "NULL". Ahora pase ese valor NULL usando try catch o si no.
fuente