我已经使用 PUT/POST 来更新我正在使用的应用程序,到目前为止这一直很简单。现在我正在开发一个 API,它应该公开一种更新数据库中数据的方法,我最初的想法是我可以替换该行(或部分替换它)。由于具有不同数据知识的不同应用程序需要更新,因此我认为使用 PATCH 操作而不是 PUT 可能是一个好主意。
我可以找到一些在控制器中实现更新的玩具示例,但我对此不感兴趣。
我使用与jasontaylordev的 Clean 架构项目中相同的模式(CQRS w. Mediatr),所以我将在我的示例中使用它。
我有两个问题。
我不喜欢该JsonPatchDocument对象应该到达我的处理程序,但我不知道如何避免这种情况。无法从控制器访问数据库。那么还有其他选择吗?(注意 Automapper 或类似的动态映射库在我正在从事的项目中都不是一个选项)
如何从客户端应用程序(所有 dotnet 核心项目)构建 JsonPatch 对象。我认为如果我可以在应用程序一中拥有一个具有两个属性Title和的 DTO,Note并且如果Title="test"和Note=null,那么它应该替换标题并删除注释,这可能会很简洁。我可以以简单的方式映射到(奇怪的)补丁对象吗?
[HttpPatch("{id}")]
public async Task<ActionResult> Update(int id, UpdateTodoItemCommand command)
{
if (id != command.Id)
{
return BadRequest();
}
await Mediator.Send(command);
return NoContent();
}
public class UpdateTodoItemCommand : IRequest
{
public int Id { get; set; }
public JsonPatchDocument<TodoItemDto> Todo { get; set; }
}
public class …Run Code Online (Sandbox Code Playgroud)昨天我被介绍到 c# 和 Visual Studio,我知道这是一个非常简单的问题。但是我们正在将代码从 .NET 框架移植到 .net CORE。我的工作是将旧代码中存在的包/库安装到新代码中(解决方案的目标框架是 2.1)
但是如何在 NuGet 数据包管理器中看到 CORE 2.1 支持特定库?例如,我可以看看这是否支持图像上的 CORE,或者所有可用的包是否与 core 2.0 兼容,因为这是目标框架?

我花了两个小时来解决这个问题。我有这个字符串:
C:\\Users\\Bob\\.luxshop\\jeans\\diesel-qd\\images\\Livier_11.png
Run Code Online (Sandbox Code Playgroud)
我有兴趣获得\\Livier_11.png ,但对我来说似乎不可能。我怎样才能做到这一点?
是否可以在 Spacy 中更改单个实体?我在列表中有一些文档对象,其中一些文档包含“欺诈”标签。但是,我需要将一些“FRAUD”实体标签更改为“FALSE_ALARM”。我正在使用 Spacy 的匹配器来查找“FALSE_ALARM”实体,但我无法覆盖现有标签。我尝试了以下方法:
def add_event_ent(matcher, doc, i, matches):
match_id, start, end = matches[i]
match_doc = doc[start:end]
for entity in match_doc.ents:
# k.label = neg_hash <-- says " attribute 'label' of 'spacy.tokens.span.Span' objects is not writable"
span = Span(doc, entity.start, entity.end, label=false_alarm_hash)
doc.ents = list(doc.ents) + [span] # add span to doc.ents
ValueError: [E098] Trying to set conflicting doc.ents: '(14, 16,
'FRAUD')' and '(14, 16, 'FALSE_ALARM')'. A token can only be part of one entity, so make sure the …Run Code Online (Sandbox Code Playgroud)