.NET + Entity Framework - Corrección para "Non-nullable property '...' must contain a non-null value" en EF DbContext
Recientemente habilité tipos de referencia anulables en un proyecto .NET 7 con la siguiente configuración en mi archivo .csproj
:
<Nullable>enable</Nullable>
El proyecto utiliza Entity Framework y contiene una clase DataContext
que se extiende desde DbContext
e incluye la siguiente propiedad DbSet
denominada Accounts
:
public DbSet<Account> Accounts { get; set; }
Advertencia de referencia anulable de Entity Framework
Después de habilitar los tipos de referencia anulables en el proyecto, la clase DbContext comenzó a mostrar la siguiente advertencia sobre la propiedad DbSet en VS Code:
Non-nullable property 'Accounts' must contain a non-null value when exiting constructor. Consider declaring the property as nullable.
Cómo arreglar la advertencia
La solución fue actualizar la propiedad Cuentas para crear y devolver el DbSet
en el captador de propiedades con el método DbContext.Set<TEntity>()
:
public DbSet<Account> Accounts => Set<Account>();
Ejemplo de clase DbContext
Esta es la clase DbContext de ejemplo con la corrección aplicada a la propiedad DbSet:
namespace WebApi.Helpers;
using Microsoft.EntityFrameworkCore;
using WebApi.Entities;
public class DataContext : DbContext
{
public DbSet<Account> Accounts => Set<Account>();
private readonly IConfiguration Configuration;
public DataContext(IConfiguration configuration)
{
Configuration = configuration;
}
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
// connect to sqlite database
options.UseSqlite(Configuration.GetConnectionString("WebApiDatabase"));
}
}
Para obtener más información sobre cómo trabajar con tipos de referencia anulables en .NET, consulte https://learn.microsoft.com/ef/core/miscellaneous/nullable-reference-types.
Suscríbete o Sígueme para actualizaciones
Suscríbete a mi canal de YouTube o sígueme en Twitter, Facebook o GitHub para recibir notificaciones cuando publique contenido nuevo.
- Suscríbete en YouTube en https://www.youtube.com/JasonWatmore
- Sígueme en Twitter en https://twitter.com/jason_watmore
- Sígueme en Facebook en https://www.facebook.com/JasonWatmoreBlog
- Sígueme en GitHub en https://github.com/cornflourblue
- Feed formats available: RSS, Atom, JSON
Aparte de la codificación...
Actualmente estoy intentando viajar por Australia en motocicleta con mi esposa Tina en un par de Royal Enfield Himalayan. Puedes seguir nuestras aventuras en YouTube, Instagram y Facebook.
- Suscríbete en YouTube en https://www.youtube.com/TinaAndJason
- Síguenos en Instagram en https://www.instagram.com/tinaandjason
- Síguenos en Facebook en https://www.facebook.com/TinaAndJasonVlog
¿Necesita Ayuda .NET?
Buscar fiverr para encontrar ayuda rápidamente de desarrolladores .NET experimentados.