小编Nat*_*tan的帖子

如何在Web API中使用FluentValidation执行异步ModelState验证?

我通过使用针对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

4
推荐指数
1
解决办法
3552
查看次数

将DateTime与DateTimeKind.Unspecified从utc转换为local

我有一个数据库,所有日期都是UTC,驱动程序总是发送给我的DateTime对象DateTimeKind.Unspecified.我想假设它们是UTC并转换为当地时间.

使用NodaTime实现这一目标的最简单方法是什么?

Instant.FromDateTimeUtc(utcDate).InZone(localZone); 继续抱怨DateTimeKind应该是Utc.

nodatime

3
推荐指数
1
解决办法
843
查看次数

Json.NET 使用的 JsonPath 语法是什么?

我正在尝试使用 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 选择器支持的内容的参考?

json json.net jsonpath

3
推荐指数
1
解决办法
2343
查看次数

使用CQRS和EventSourcing时如何确保外部预测同步?

我正在开始一个新的应用程序,我想使用cqrs和eventsourcing.我想到了重播事件以重新创建聚合和快照,以便在需要时加速,使用内存模型,缓存等.

我的问题是关于我不想在内存中保存的大型读取模型.假设我有一个销售产品的应用程序,我想收听"ProductRegistered""ProductSold"等事件流,并在关系数据库中构建一个表,用于报告或与另一个系统集成.假设有很多记录,这个表可能需要几秒到几分钟来截断/重建,并且应用程序会出于多种目的导出数十个这些预测.

在这种情况下,如何处理预测的一致性?

使用内存数据,重放事件非常简单快捷.但是我觉得保留在磁盘中的外部投影在重建时要慢得多.

  1. 我是否应该始终使用TRUNCATE TABLE + rebuild为每个外部投影启动我的应用程序?这对我来说似乎不切实际,但我可能会担心我还没有遇到的问题.

  2. 由于表本身就像一个快照,我可以保留一个"控制表"来告诉哪个事件是我为该投影处理的最后一个事件,所以我只能重播所需的内容.但是我担心如果应用程序或数据库崩溃会出现不一致.似乎检查表的一致性和重建将是相同的,这再次指向解决方案1.

你会如何以一种可维持的方式处理它?有更好的解决方案吗?

非常感谢你.

cqrs event-sourcing

1
推荐指数
1
解决办法
1446
查看次数