使用Entity Framework Core(代码优先)和SQLite,将Guid存储为二进制文件,但将Decimal和Date字段存储为Microsoft提供程序的文本。
我了解他们可能不希望DOUBLE的货币金额不准确,因此使用文字。
如果我需要分类怎么办? Entity Framework Core是否足够聪明,可以按预期进行排序(但速度较慢,因为它需要解析所有内容!),还是按字母排序而不是按数字排序?我不希望它在2之前返回100。
我将不得不执行“给我最新订单”之类的事情,那么最好的方法是什么?我想确保它能正常工作。
我是否最好切换到System.Data.SQLite提供程序以UNIX格式存储日期(Microsoft的提供程序不支持此日期)?然后我必须自己来回解析还是可以自动处理呢?
答案 0 :(得分:0)
我自己仍在学习system.data.sqlite,但我知道您可以创建自定义归类并将其分配给您的列。排序规则既可以分配给表列,也可以仅分配给特定视图或使用标准sqlite SQL语法和COLLATE
关键字的查询。
这不是完整的示例/教程,但对于初学者来说,请访问the Microsoft.data.sqlite docs。另请参见this stack overflow answer。这些只是提示,但是提供了一种一致的方法来执行此操作。请记住,sqlite是一个进程内数据库引擎,因此它仍然应该非常高效,并且仍然可以以常规方式使用数据库,而不必在查询之间不断插入自定义逻辑。一旦定义好自定义排序规则并正确注册,它应该是无缝的,也许只有附加的附加要求,例如COLLATE customDecimal
到ORDER BY子句。
自定义归类功能会将字符串值转换为适当的数字类型并返回比较。它与本机.Net IComparer和IComparison接口/实现非常相似。