我观看了Steve Sanderson的这段视频,该视频演示了在Blazor Web Assembly中使用SQLite,我正在考虑在我的一个项目中使用它。我只是想了解它的好处是什么。从我能找到的任何信息来看,实际的SQLite数据库似乎都存在于内存中。在他的项目中,为了持久性,他将它与IndexedDB同步。如果是这样的话,那怎么比将数据作为对象列表存储在内存中,并使用Linq直接查询对象,而不是使用实体框架从SQLite数据库进行查询更好呢?如果需要,您还可以将对象持久化到IndexedDB。我从来没有觉得把这么多数据保存在内存中是个好主意。当看到您可以在Blazor中使用SQLite时,我最初的想法是,它允许您在不将数据全部保存在内存中的情况下保留数据客户端。如果不是这样,那么在Blazor应用程序中使用SQLlite有什么好处?
一个好的编程规则是KISS-保持简单。因此,如果Linq-to-Objects满足了应用程序的需求,那么用SQLite将其复杂化似乎是错误的做法
然而,在视频中,Steve S.确实提出了有助于使用SQLite的需求参数——应用程序需要处理:
- 大量数据
- 在客户端
- 脱机
- 迅速
这里使用SQLite不是为了在客户端应用程序内存之外进行持久化。
因此,关于使用SQLite的Blazor应用程序的优势问题的答案很简单:
- 如果一个应用程序需要内存中关系数据库的功能,但却试图避免使用,那么它要么在实现中重新设计轮子,要么缺少必要的功能
- 如果一个应用程序不需要内存数据库的功能,但正在使用内存数据库,那么它将引入不必要的复杂性(成本(