Publicada:

.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.

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.


¿Necesita Ayuda .NET?

Buscar fiverr para encontrar ayuda rápidamente de desarrolladores .NET experimentados.