使用实体框架核心(代码优先)和SQLite,Guid存储为二进制,而十进制和日期字段在微软的提供商中存储为文本。
我可以理解他们可能不希望货币金额的不精确度为双精度,因此使用文本。
如果我需要排序,会发生什么?Entity Framework Core是否足够智能,使排序按预期工作(但速度较慢,因为它需要解析所有内容!),或者它将按字母顺序排序,而不是按数字排序?我不希望它在2之前返回100。
我必须做“给我最新的订单”这样的事情,那么最好的方法是什么呢?我想确保它能起作用。
我是不是更好地切换到System.Data.SQLite提供程序来存储UNIX格式的日期(微软的提供程序不支持这种格式)?然后,我是否必须自己来回解析,或者它可以自动处理?
我自己仍在学习system.data.sqlite,但我知道您可以创建自定义排序规则并将其分配给您的列。排序规则可以分配给表列,也可以使用标准sqlite SQL语法和
COLLATE
关键字仅分配给特定视图或查询。
这不是一个完整的示例/教程,但对于初学者来说,请访问
the Microsoft.data.sqlite docs
。另请参阅
this stack overflow answer
。这些只是一些提示,但提供了一种一致的方法来实现这一点。请记住,sqlite是一个进程内DB引擎,因此它应该仍然相当有效,并且仍然允许以正常方式使用数据库,而不必在查询之间不断插入自定义逻辑。一旦您定义并正确注册了自定义排序规则,它应该是相当无缝的,可能唯一的额外要求是将
COLLATE customDecimal
附加到ORDER BY子句中。
自定义排序规则函数将字符串值转换为适当的数值类型,并返回比较结果。它与原生.Net IComparer和IComparison接口/实现非常相似。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2023 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
扫码关注腾讯云开发者
领取腾讯云代金券