问题标签 [coolstorage]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
69 浏览

orm - CoolStorage 无法设置一对一关系

问题是我无法理解如何在两个对象之间建立 OneToOne 关系,以使第一个对象与第二个对象具有链接,而第二个对象与第一个对象具有链接。这是代码:

问题是,当我创建产品和模型并将模型的属性“产品”设置为创建的并保存时,产品的“模型”属性不会设置并保持为 NULL。我已经尝试使产品和模型属性的所有本地和外键都相同(例如“ModelID”),但它并没有解决问题。这样做的正确方法是什么?

我想制作其中一个可以解决问题[OneToMany],但会返回一个集合,而我需要一个属性返回一个对象。

更新

这是一个简单的解决方案,人们称之为拐杖:

0 投票
1 回答
147 浏览

xamarin.ios - Vici CoolStorage for MonoTouch 是否支持 UniqueIdentifier 键?

一个这样声明的 sqlite 表:

在 Windows 上被 Vici CoolStorage 正确读取,但在 MonoTouch 上,抛出以下异常:

[ERROR] FATAL UNHANDLED EXCEPTION: System.InvalidCastException: Cannot cast from source type to destination type. at Vici.CoolStorage.CSDataProviderSQLite.GetSchemaColumns (System.String tableName) [0x00000] in <filename unknown>:0 at Vici.CoolStorage.CSSchema.CreateColumns () [0x00000] in <filename unknown>:0 at Vici.CoolStorage.CSSchema..ctor (System.Type objType) [0x00000] in <filename unknown>:0 at Vici.CoolStorage.CSSchema.Get (System.Type objectType) [0x00000] in <filename unknown>:0 at Vici.CoolStorage.CSList``1[Store.CoolStorage.Note]..ctor () [0x00000] in <filename unknown>:0

看起来根据类型 ID 检测列的数据类型的代码没有处理 Vici 的 MonoTouch 的 CSDataProviderSqlite 中的 UNIQUEIDENTIFIER 类型:

来自 CSSqliteConnection.GetSchema:

这里没有 UNIQUEIDENTIFIER 的处理程序。这是 Vici CoolStorage 中的错误吗?

0 投票
1 回答
90 浏览

c# - 同一张表的多对多关系

我正在尝试在同一个表中添加类别之间的关系。我有一个

类别(ID 整数主键自动增量,名称文本)

表和

CATEGORIES_CATEGORIES (ID INTEGER PRIMARY KEY AUTOINCREMENT, CATEGORIES_ID INTEGER NOT NULL, SUBCATEGORIES_ID INTEGER NOT NULL)

桌子。

我正在尝试将它们与 Vici Coolstorage ORM 映射在一起。我已经上课了

类别类

CategoryCategory 类

但我不能让它工作。任何人都可以帮助我让这种关系发挥作用吗?

0 投票
1 回答
161 浏览

multithreading - Vici 冷却存储附加线程

我有一个相对较小的 iPhone 和 Android 单点触控项目,并计划添加 WP7。我在 SQLite 上使用 vici coolstorage 作为 ORM,它对我来说效果很好,但是有一个问题。它使用 db 为每个线程创建额外的线程。由于应用程序是大规模并行的,我已经达到了线程的限制,所以我想改变它。我发现线程创建是在 CSConfig.cs 中执行的,其中每次从不同线程调用 GetDB 都会创建一个新线程:

_threadData标记[ThreadStatic]。我想每次我使用 ORM 时都会调用这个 GetDB(我将 CSConfig 中的默认 DB 设置为我的 DB)。线程是在ThreadData构造函数内部创建的。线程执行这个函数:

因此,基本上它等待调用者终止,然后处理数据库连接。

问题是,我怎样才能覆盖这种行为,或者让 GC 处理数据库连接,或者Dispose()在调用线程终止之前调用自己(我使用 DB 控制所有线程,所以我可以做到)。我知道当线程结束时不让 ORM 处理断开连接是不好的,但是我不能为每个工作线程使用一个额外的线程。

0 投票
1 回答
112 浏览

c# - 如何使用 CoolStorage 删除表中的所有记录?

我使用 Vici CoolStorage 在我的 Windows Phone 应用程序中处理 SQLite 数据库。如何删除表中的所有记录?

0 投票
0 回答
91 浏览

iphone - MonoTouch CoolStorage OneToMany 缓存问题

我遇到了 CoolStorage 的问题,其中在第一次读取列表时缓存了 OneToMany 关系,然后当数据稍后更改时,该列表无法更新。

重新启动我的应用程序时,列表是正确的,所以它一定是一个缓存问题,我在 CoolStorage 文档或任何地方都找不到解决方案。

我在下面粘贴了我的单元测试代码。

我有一个具有 Person 类型的 Opponent 的 Game 类。有很多游戏,一个人可以是很多游戏的对手。

我的 Person 类有一个CSList名为 OpponentGames,所以在任何时候我都可以对那个人说“获取这个人是对手的游戏”。

在单元测试中我第一次引用“person.OpponentGames.Count”时,它正确地告诉我有一个游戏。创建第二个游戏并将我的人添加为对手后,它仍然会为 OpponentGames 报告一场游戏。

如果我删除第一个计数,则测试通过,因此第一个检查结果将被缓存,并且不会从那里更新。

我将不胜感激任何建议!谢谢。

SQL (sqlite3)设置:

CoolStorage .Net 类:

最后,单元测试:

0 投票
1 回答
182 浏览

c# - 如何将自定义 sql 查询映射到冷存储中的 CSObjects?

我想在使用 Vici.CoolStorage 时使用复杂的 sql 查询来获取对象列表。它本身提供了特定的查询语法,但它的功能不足以满足我的需求。在网站上有一个如何将自定义查询结果映射到自定义对象的示例,但我想要的是获取 CSObject 后代的列表(CSList),与使用 CSObject.List () 方法获得的相同。

0 投票
1 回答
282 浏览

.net - WPF Datagrid 与 vici coolstorage CSList 绑定导致转换错误

当我尝试将 CSList 用作 WPF DataGrid 的 ItemsSource 时,出现错误

无法将“System.Object[]”类型的对象转换为“Product[]”类型

我不完全确定是否可以将其用作绑定源,但根据几乎不存在的 vici coolstorage 文档,他们的集合应该适合绑定。这是它似乎失败的行:

有人可以告诉我这是否可能,如果是,我做错了什么?

谢谢!

[编辑] 这是堆栈跟踪(略有改动)

0 投票
0 回答
79 浏览

many-to-many - Vici coolstorage 在保存 ManyToMany 纯关系中的错误?

我们有一个测试用例,它在实体 X 和 Y 之间创建多对多关系,然后删除相同的关系。

SQLite 抛出关系存在的约束冲突。经过一番挖掘,我们发现关系表中还有一个关系表项。

看来这可能是 Vici CoolStorage 本身的一个错误。处理删除和添加对象的代码如下所示(在 CSListGeneric.cs 中):

请注意,在执行删除语句后,已删除对象集合设置为 null。但是,添加的对象集合不会类似地重置。

在底部添加行似乎可以解决问题。

这是正确的解决方法,还是我们遗漏了什么?

0 投票
1 回答
164 浏览

orm - Has Vici CoolStorage been updated to work with WinRT / Metro?

The project website does not indicate any support for WinRT.

Is there a way to do this? We (like many others, presumably) had bet on Vici CoolStorage for its cross-platform capabilities.