实体框架7异步集合

Fab*_*Fab 10 entity-framework-core

实体框架7中的ToListAsync()在哪里.如何在EF 7中使用异步方法返回集合或SingleOrDefault.

 public async Task<IEnumerable<TodoItem>> GetAllAsync()
    {   
        //TODO: ToListAsync missing?         

        return await _context.Todos.ToAsyncEnumerable();
    }
Run Code Online (Sandbox Code Playgroud)

这是返回错误,不包含GetAwaiter的定义?SaveChangesAsync没问题.

Sha*_*tin 14

Microsoft.EntityFrameworkCore 命名空间

Microsoft.EntityFrameworkCore命名空间包括async扩展方法.该命名空间位于Microsoft.EntityFrameworkCore包中.这是GitHub上的源代码,这里是它的async扩展方法.

  • AnyAsync()
  • AllAsync()
  • CountAsync()
  • LongCountAsync()
  • FirstAsync()
  • FirstOrDefaultAsync()
  • LastAsync()
  • LastOrDefaultAsync()
  • SingleAsync()
  • SingleOrDefaultAsync()
  • MinAsync()
  • MaxAsync()
  • SumAsync()
  • AverageAsync()
  • ContainsAsync()
  • ToListAsync()
  • ToArrayAsync()
  • LoadAsync()
  • ToDictionaryAsync()
  • ForEachAsync()

示例用法

project.json

"Microsoft.EntityFrameworkCore": "1.0.0",
Run Code Online (Sandbox Code Playgroud)

ApplicationUserRepository.cs

using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;

namespace MyApplication.Models {
    public class ApplicationUserRepository : IApplicationUserRepository
    {
        private ApplicationDbContext _dbContext;

        public ApplicationUserRepository(ApplicationDbContext dbContext) {
            _dbContext = dbContext;
        }

        public async Task<ApplicationUser> Find(Guid id)
        {
            return await _dbContext.Users.SingleAsync(u => u.Id == id);
        }

        public async Task<IEnumerable<ApplicationUser>> GetAll()
        {
            return await _dbContext.Users.ToListAsync();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Jak*_*ote 0

ToListAsync()包中的命名空间中还SingleOrDefaultAsync()存在许多其他异步方法。Microsoft.Data.EntityEntityFramework.Core