Estoy usando ASP.NET core 2.2 para desarrollar apis web. Tengo el siguiente método en la clase de repositorio:
public async Task<Articles> AddAsync(Articles article)
{
return await _context.Articles.AddAsync(article);
}
Recibo el siguiente error:
Cannot implicitly convert type 'Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry<Author.Command.Persistence.DBContextAggregate.Articles>' to 'Author.Command.Persistence.DBContextAggregate.Articles'
Aquí estoy tratando de usar la versión AddAsync para guardar los datos.
¿Alguien puede ayudarme a proporcionar su guía para solucionar este problema?
El método AddAsync
no devuelve solo el tipo proporcionado, en su caso Articles
. Task<EntityEntry>
. Para solucionar su problema, cambie su código a lo siguiente.
public async Task<Articles> AddAsync(Articles article)
{
await _context.Articles.AddAsync(article);
return article;
}
Los cambios realizados en la instancia del artículo persistirán, ya que EFCore rastreará la Entidad proporcionada. Vea el MSDN para más información.
Lo que básicamente sucederá ahora es que su instancia de
Articles
se agrega al DBSet del DBContext. Si la clave principal se genera para usted, en realidad la establecerá en la instancia que proporcionó el método AddAsync.
Como Chris Pratt
mencionó en los documentos
Este método es asíncrono solo para permitir que generadores de valores especiales, como el utilizado por 'Microsoft.EntityFrameworkCore.Metadata.SqlServerValueGenerationStrategy.SequenceHiLo', accedan a la base de datos de forma asincrónica. Para todos los demás casos, se debe utilizar el método no asíncrono.
Por lo tanto, debería usar las versiones síncronas Add
lugar.
Entonces el código debería verse así.
public Articles Add(Articles article)
{
_context.Articles.Add(article);
return article;
}