VS 코드를 사용하고 ASP.NET Core/EF Core 자습서를 따르고 있으며 명확하지 않습니다. 비동기, 대기 및 작업 방법에 대해 설명합니다 (처음 두 개는 알고 있지만 세 번째는 아는 것은 아닙니다.) 저는 처음으로 저장소를 구현하고 UnitofWork 클래스와 인터페이스를 함께 구현할 것입니다. 여기의 UnitOfWork 클래스는 다음과 같습니다해결 방법 : 비동기 메서드의 반환 유형을 void, 작업 또는 작업이어야합니다. <T> [AppName]
나는 CompleteAsync 액션 이름 위에 마우스를 가져 가면 VS-코드 인텔리로 표시되는 주제 줄 오류에 추가using System.Threading.Tasks;
namespace vega.Persistence
{
public class UnitOfWork : IUnitOfWork
{
private readonly VegaDbContext context;
public UnitOfWork(VegaDbContext context)
{
this.context = context;
}
public async Task CompleteAsync()
{
await context.SaveChangesAsync();
}
}
}
, 내가 얻을이 :
'UnitOfWork.CompleteAsync()': not all code paths return a value [AppName]
다른 아마 관련 조각 : 내 Startup.cs에서
using System;
using System.Threading.Tasks;
namespace vega.Persistence
{
public interface IUnitOfWork
{
Task CompleteAsync();
}
}
:
public void ConfigureServices(IServiceCollection services)
{
// Add Repository and UnitOfWork --scoped (instance persits for life of request),
// not Transient or Singleton
services.AddScoped<IVehicleRepository, VehicleRepository>();
services.AddScoped<IUnitOfWork, UnitOfWork>();
}
정말 이상합니다. 코드에 문제가없는 것 같습니다. 아마도 VS 코드의 버그 일 수 있습니다. 오류 메시지가 나타나면 프로젝트가있는 폴더에서'dotnet build'를 실행 해 보셨습니까? 그건 그렇고, EF를 사용할 때 작업 단위를 작성하는 것은별로 유용하지 않습니다. DataContext는 이미 UnitOfWork 구현입니다. DataContext를 컨트롤러 밖으로 유지하려면 서비스를 작성해야합니다. – Gimly
예. => '빌드가 실패했습니다. Persistence \ UnitOfWork.cs (14,23) : 오류 CS1983 : 비동기 메서드 의 반환 유형은 무효이어야합니다. 작업 또는 작업 [C : \ Users \ .. \ Vega.csproj] 0 경고) 1 오류 ( –
PakiPat
) 또한 프로젝트를 복원하고 VS 코드를 다시 시작했습니다. – PakiPat