在 dapr 中使用 ORM

saj*_*jad 3 sql entity-framework-core dapr

目前我正在学习Dapr,我发现它对于微服务开发来说很强大,但是在阅读更多之后,我发现了一些局限性,其中最重要的是“状态管理”。

我们如何使用 EF Core 或 Dapper 等工具与 Dapr 中的数据库进行交互?DaprClient 类是与数据库交互的唯一方式吗?

ewa*_*sef 5

您应该继续将这些 ORM 与 Dapr 一起使用,因为它不能替代它们。ORM 已经充当关系存储数据的转换层(存储库层)。状态管理是简单的 KVP 存储,具有一些最小的查询能力。将您的状态视为一个 Dictionary<string,object>,其中该对象可以是任何简单或复杂的对象。这非常适合 Redis、DynamoDB、MongoDB、Cassandra 等技术。同样,您放入缓存的内容就是您放入状态存储的内容。因此,您仍然可以(并且应该)在您的服务中拥有一个用于关系数据的 ORM,并传入提供者的运行时配置、连接字符串等,同时能够通过 DaprClient、HTTPClient 或 GRPC 客户端利用 Dapr 的所有其他功能。

另外,对于 EFCore/EF 中的许多提供程序,您可以添加跟踪标头 ( https://github.com/opentracing-contrib/csharp-netcore ),该标头将无缝插入 Dapr 免费提供的跟踪中。这样,您将看到状态和关系数据的完整端到端跟踪