首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用实体框架核心和SQLite进行小数/日期排序

使用实体框架核心和SQLite进行小数/日期排序
EN

Stack Overflow用户
提问于 2019-04-10 23:46:24
回答 1查看 508关注 0票数 0

使用实体框架核心(代码优先)和SQLite,Guid存储为二进制,而十进制和日期字段在微软的提供商中存储为文本。

我可以理解他们可能不希望货币金额的不精确度为双精度,因此使用文本。

如果我需要排序,会发生什么?Entity Framework Core是否足够智能,使排序按预期工作(但速度较慢,因为它需要解析所有内容!),或者它将按字母顺序排序,而不是按数字排序?我不希望它在2之前返回100。

我必须做“给我最新的订单”这样的事情,那么最好的方法是什么呢?我想确保它能起作用。

我是不是更好地切换到System.Data.SQLite提供程序来存储UNIX格式的日期(微软的提供程序不支持这种格式)?然后,我是否必须自己来回解析,或者它可以自动处理?

EN

回答 1

Stack Overflow用户

发布于 2019-06-08 09:06:14

我自己仍在学习system.data.sqlite,但我知道您可以创建自定义排序规则并将其分配给您的列。排序规则可以分配给表列,也可以使用标准sqlite SQL语法和COLLATE关键字仅分配给特定视图或查询。

这不是一个完整的示例/教程,但对于初学者来说,请访问the Microsoft.data.sqlite docs。另请参阅this stack overflow answer。这些只是一些提示,但提供了一种一致的方法来实现这一点。请记住,sqlite是一个进程内DB引擎,因此它应该仍然相当有效,并且仍然允许以正常方式使用数据库,而不必在查询之间不断插入自定义逻辑。一旦您定义并正确注册了自定义排序规则,它应该是相当无缝的,可能唯一的额外要求是将COLLATE customDecimal附加到ORDER BY子句中。

自定义排序规则函数将字符串值转换为适当的数值类型,并返回比较结果。它与原生.Net IComparer和IComparison接口/实现非常相似。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55616641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档