nullreferenceexception: ссылка на объект не установлена ​​на экземпляр объекта при вызове базы данных - PullRequest
0 голосов
/ 28 мая 2020

Я получаю исключение nullreferenceexception в методе моего класса репозитория, когда я пытаюсь получить все записи модели, я читал об этом исключении и думаю, что понимаю его, но не понимаю, почему это происходит в моем коде.

У меня есть эта модель:

public class Post
{

    [Key]
    public int Id { get; set; }
    public string Title { get; set; } = "";
    public string Body { get; set; } = "";
    public DateTime? Created { get; set; } = DateTime.Now;
}

это мой контекст:

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions options) : base(options) { }
    public DbSet<Post> Posts { get; set; }
}

Метод GetAllPost () в моем класс репозитория:

    public async Task<List<Post>> GetAllPost()
    {
        var listOfPost = _context.Posts;//here is where the exception is thrown
        return await listOfPost.ToListAsync();
    }

Это весь мой класс репозитория:

public class Repository : IRepository
{
    private readonly AppDbContext _context;

    public Repository(AppDbContext context) {
        _context = context;
    }

    public async Task AddPost(Post post)
    {
        await _context.Posts.AddAsync(post);
        await _context.SaveChangesAsync();
    }

    public async Task<List<Post>> GetAllPost()
    {
        var listOfPost = _context.Posts;

        return await listOfPost.ToListAsync();
    }

    public async Task<Post> GetPost(int id)
    {
        return await _context.Posts.FirstOrDefaultAsync(x=> x.Id == id);
    }

    public async Task RemovePost(Post post)
    {
         _context.Remove(post);
         await _context.SaveChangesAsync();
    }

    public async Task UpdatePost(Post post)
    {
         _context.Posts.Update(post);
        await _context.SaveChangesAsync();
    }
}

, а это мой метод ConfigureService (я, кстати, использую postgres):

public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllersWithViews();

           services.AddEntityFrameworkNpgsql().AddDbContext<AppDbContext>(
               x => x.UseNpgsql(
                   Configuration.GetConnectionString("DefaultConnection")
                   )
               );

            services.AddTransient<IRepository, Repository>();

        }

Моя база данных создана с миграциями и заполнена

...