erl*_*man 7 sqlite dart flutter flutter-moor
所以我一直在为 Flutter 寻找一些 ORM,我找到了两个候选对象Moor和Floor.
似乎Moor 有一个更活跃的存储库,但是当我来自 Android 世界时,Floor 似乎更类似于 我曾经喜欢的Room。
目前,我赞成使用 Floor,但在生产中使用它之前是否有任何我应该注意的隐藏问题?
我也有一些疑问,哪个最适合生产环境。似乎 Moor 已经稳定并经过实战测试和生产准备就绪。在 moor FAQ 中有一个很好的技术解释,比较了 Moor 和 Floor 以及另一种选择:
Floor 还具有许多便利功能,例如自动更新查询和架构迁移。与 moor 类似,您可以在 Dart 中定义数据库的结构。然后,您在 sql 中编写查询 - 如果由 floor 生成,则为映射代码。Moor 有一个类似的功能,但它也可以验证您的查询在编译时是否有效。Moor 还有一个 api,让你可以用 Dart 而不是 sql 编写一些查询。
这两者之间的区别在于,Floor 让您编写自己的类并围绕它生成映射代码。Moor 为您生成大多数类,这可以使其更易于使用,但在某些情况下会降低 api 的灵活性。
我已经进行了一些测试,包括 sqfEntity,它是员工脚手架概念,它可以做更多的事情,比如表单,而不仅仅是数据持久性。对我来说,Floor 似乎更接近 Hibernate,主要是在创建实体的方式上,只需比较它们的实体 sintaxe,因此我发现它更熟悉,尽管它很新,但我还是选择了 Floor。
还有用于 Dart 的 Jaguar ORM:https : //github.com/Jaguar-dart/jaguar_orm。我还没有测试过 JaguarORM,但它是唯一一个支持 OneToOne、OneToMany 和 ManyToMany 关系并且还支持其他数据库的数据库。
Moor 有一个对网络的实验性支持,看看:https : //moor.simonbinder.eu/web/。尽管这是一项实验性功能,但如果您的应用程序需要在网络上可移植,则您需要考虑它。网络还有另一种选择:https : //github.com/sql-js/sql.js。事实上,让 sqlite 被抽象到浏览器中的本地存储是非常困难的。但至少摩尔正在努力实现它。
对于那些正在寻找 DateTime 转换器的人,Floor 和 Moor 已经支持它。Floor 自 0.17 版起添加:https : //github.com/vitusorner/floor#type-converters
如果你只需要关心android/ios我推荐你试试Floor,主要是因为他的sintaxe真的很好。
据我所知,Floor 是一个相当新的。甚至它的文档也说明了这一点
该软件包仍处于早期阶段,API 可能会发生变化。
所以这意味着如果包被改变,那么你也必须调整你的代码。而 Moor 更受欢迎,您可以找到一些不错的教程。甚至Google 开发人员也将其用于演示目的。
| 归档时间: |
|
| 查看次数: |
4406 次 |
| 最近记录: |