7

什么 ORM 支持异步操作和 postgresql ?

我更喜欢像 Dapper 和 OrmLite 这样的简单 MicroOrms,因为它们似乎具有出色的性能并且它们非常简单,但据我所知它们不支持异步操作。

也许我错了,但是让所有 IO 绑定操作异步以获得说需要扩展的异步 Web 服务的全部好处并不重要吗?

那么对于同时支持异步操作和 Postgresql 的 MicroOrm 有哪些选择呢?我刚刚阅读了一个名为 Insight.Data 的新 Orm,但我不确定它是否正确支持 PostgreSql。

4

7 回答 7

4

如果您使用的是 .NET 4.5,我编写了Dapper 的一个分支,它添加了内部调用ExecuteReaderAsync的异步方法。它也可以在 NuGet 上使用。我还没有用 Postgresql 测试过它,但如果 Dapper 可以使用它,那么我的 fork 也应该如此。

于 2012-09-15T05:46:19.410 回答
3

刚刚偶然发现了这个名为Insight.Database的新 ORM ,他们声称支持异步查询:

List<Beer> beerMenu = await Database1.AsyncQuery<Beer>("FindBeer", new { Name = "Sly Fox" });

我还没试过。。。

于 2012-09-10T16:39:32.827 回答
2

Telerik 的免费OpenAccess ORM支持 PostgeSQL,但我看不到任何关于异步的内容。也许您可以联系他们,他们的在线支持非常好。

于 2012-09-09T21:56:11.787 回答
2

AsyncPoco是PetaPoco的一个分支,支持异步操作(独家)和 PostgeSQL。

于 2014-01-07T20:56:16.790 回答
2

Insight.Database 具有完整的异步支持,可与任何 .NET SqlProvider 一起使用。我没有在 postgres 上专门测试过它,但是如果你在 github 站点上发布问题,我很乐意将 postgres 合并到测试套件中。

https://github.com/jonwagner/Insight.Database

编辑:Insight v3.0 及更高版本支持大多数数据库。

于 2013-01-12T11:59:57.667 回答
1

Dapper 提供异步支持已经有一段时间了,但仅限于针对 .NET 4.5 的情况。我可能使用 BCL 异步目标包向后移植到 4.0,但迄今为止:我还没有这样做。

于 2014-09-14T14:33:50.317 回答
-1

AFAIK 唯一在其阅读器上本机支持异步执行、提供程序端和服务器端(而不是像使用 Task.Run() 包装调用那样的假的)的 RDBMS 是 SQL Server。您可以通过反编译特定的 ADO.NET 数据提供程序来看到这一点。ExecuteReaderAsync 的默认实现在内部调用同步的,如果没有被覆盖的话。请通过反编译特定的 ADO.NET 提供程序来仔细检查,因为在使用 async 和 await 时,您最终可能会在 UI 线程中执行数据库操作。

于 2019-05-02T14:10:13.227 回答