我通过使用针对FluentValidation的webapi集成包,设置了一个Web api项目以使用FluentValidation。然后,我创建了一个验证器,该验证器CustomAsync(...)用于对数据库运行查询。
问题在于,等待数据库任务时验证似乎陷入僵局。我进行了一些调查,看来MVC ModelState API是同步的,并且它调用Validate(...)使FluentValidation 调用的同步方法task.Result,从而导致死锁。
假设异步调用无法与Webapi集成验证一起使用是否正确?
如果是这样,还有什么选择?WebApi ActionFilters似乎支持异步处理。我是否需要构建自己的过滤器来手动处理验证,或者是否已经存在我没有看到的东西?
c# model-validation fluentvalidation async-await asp.net-web-api
我有一个数据库,所有日期都是UTC,驱动程序总是发送给我的DateTime对象DateTimeKind.Unspecified.我想假设它们是UTC并转换为当地时间.
使用NodaTime实现这一目标的最简单方法是什么?
Instant.FromDateTimeUtc(utcDate).InZone(localZone); 继续抱怨DateTimeKind应该是Utc.
我正在尝试使用 Json.NET 选择一些节点,SelectTokens它似乎不支持原始 jsonpath支持的相同语法。鉴于此输入:
{
"a": [
{
"id": 1
}
],
"b": [
{
"id": 2
},
{
"id": 3,
"c": {
"id": 4
}
}
],
"d": [
{
"id": 5
}
]
}
Run Code Online (Sandbox Code Playgroud)
a我只想要内部所有顶级对象的 id b,而不是内部对象的 id。使用 gossner 的解析器我可以这样做:$.[a,b].*.id,它返回[1, 2, 3]。
Json.NET 似乎既不支持逗号也不支持 *。如何使用 Json.NET 实现这一点?是否有关于 Json.NET jpath 选择器支持的内容的参考?
我正在开始一个新的应用程序,我想使用cqrs和eventsourcing.我想到了重播事件以重新创建聚合和快照,以便在需要时加速,使用内存模型,缓存等.
我的问题是关于我不想在内存中保存的大型读取模型.假设我有一个销售产品的应用程序,我想收听"ProductRegistered""ProductSold"等事件流,并在关系数据库中构建一个表,用于报告或与另一个系统集成.假设有很多记录,这个表可能需要几秒到几分钟来截断/重建,并且应用程序会出于多种目的导出数十个这些预测.
在这种情况下,如何处理预测的一致性?
使用内存数据,重放事件非常简单快捷.但是我觉得保留在磁盘中的外部投影在重建时要慢得多.
我是否应该始终使用TRUNCATE TABLE + rebuild为每个外部投影启动我的应用程序?这对我来说似乎不切实际,但我可能会担心我还没有遇到的问题.
由于表本身就像一个快照,我可以保留一个"控制表"来告诉哪个事件是我为该投影处理的最后一个事件,所以我只能重播所需的内容.但是我担心如果应用程序或数据库崩溃会出现不一致.似乎检查表的一致性和重建将是相同的,这再次指向解决方案1.
你会如何以一种可维持的方式处理它?有更好的解决方案吗?
非常感谢你.