gpt4 book ai didi

c# - 无法将类型 'Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry' 隐式转换为 'T'

转载 作者:行者123 更新时间:2023-12-03 18:32:54 28 4
gpt4 key购买 nike

我正在使用 ASP.NET core 2.2 来开发 web api。我在存储库类中有以下方法:

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 .它确实返回 Task<EntityEntry> .要解决您的问题,请将您的代码更改为以下内容。

public async Task<Articles> AddAsync(Articles article)
{
await _context.Articles.AddAsync(article);
return article;
}
对文章实例所做的更改将持续存在,因为 EFCore 将跟踪提供的实体。
MSDN想要查询更多的信息。

What will basically happen now is that your Articles instance is added to the DBSet of the DBContext. If the primary key is generated for you, it will actually set it in the instance you provided the AddAsync method.


编辑
Chris Pratt从文档中提到

This method is async only to allow special value generators, such as the one used by 'Microsoft.EntityFrameworkCore.Metadata.SqlServerValueGenerationStrategy.SequenceHiLo', to access the database asynchronously. For all other cases the non async method should be used.


所以你应该使用同步版本 Add反而。
所以代码应该是这样的。
public Articles Add(Articles article)
{
_context.Articles.Add(article);
return article;
}

关于c# - 无法将类型 'Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry<T>' 隐式转换为 'T',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57185474/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com