웹 API를 개발하기 위해 ASP.NET 코어 2.2를 사용하고 있습니다. 리포지토리 클래스에는 다음과 같은 메서드가 있습니다.
public async Task<Articles> AddAsync(Articles article)
{
return await _context.Articles.AddAsync(article);
}
아래 오류가 발생합니다.
Cannot implicitly convert type 'Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry<Author.Command.Persistence.DBContextAggregate.Articles>' to 'Author.Command.Persistence.DBContextAggregate.Articles'
여기서는 AddAsync 버전을 사용하여 데이터를 저장하려고합니다.
누구 든지이 문제를 해결하기 위해 지침을 제공하도록 도울 수 있습니까?
AddAsync
메소드는 제공된 Articles
유형의 Articles
만 반환하지 않습니다. Task<EntityEntry>
반환합니다. 문제를 해결하려면 코드를 다음과 같이 변경하십시오.
public async Task<Articles> AddAsync(Articles article)
{
await _context.Articles.AddAsync(article);
return article;
}
EFCore가 제공된 엔티티를 추적하므로 기사 인스턴스에 대한 변경 사항이 유지됩니다. 자세한 내용은 MSDN 을 참조하십시오.
기본적으로 지금 일어날 일은
Articles
인스턴스가 DBContext의 DBSet에 추가 된 것입니다. 기본 키가 생성되면 AddAsync 메서드를 제공 한 인스턴스에서 실제로 설정됩니다.
Chris Pratt
가 문서에서 언급했듯이
Blockquotehis 메서드는 'Microsoft.EntityFrameworkCore.Metadata.SqlServerValueGenerationStrategy.SequenceHiLo'에서 사용하는 것과 같은 특수 값 생성기가 비동기 적으로 데이터베이스에 액세스 할 수 있도록 비동기식입니다. 다른 모든 경우에는 비동기가 아닌 방법을 사용해야합니다.
따라서 대신 동기 버전 Add
를 사용해야합니다.
따라서 코드는 다음과 같아야합니다.
public Articles Add(Articles article)
{
_context.Articles.Add(article);
return article;
}