【发布时间】:2020-12-25 05:25:35
【问题描述】:
我需要在我的数据库中存储位置(x,y 点),其中点可以为空,X 和Y 总是小于 999。目前我使用的是 EFCore Code First 和 Postgresql 数据库,但我想灵活一点,这样我就可以在没有太多工作的情况下切换到 MSSql。我不打算离开 EF Core。
现在,我有两列:LocationX 和LocationY,都是int? 类型。我不确定这是否是一个好的解决方案,因为从技术上讲 DB 允许 (X=2, Y=null),它应该是。要么都为空,要么都不是。
我的选择二是将它存储在一个字符串列中:“123x321”,最大长度为 7。
有没有更好的办法?
谢谢,
【问题讨论】:
-
为什么不使用point
-
@a_horse_with_no_name 哦,我不知道这种类型。呃..但为什么它需要 16 个字节?使用两个 smallint 列,我可以将一个点存储在 4 个字节上
-
在 PostgreSQL 和 MSSQL 中以统一的方式支持几何类型。见Spatial Data in EF Core。它们支持比简单的 X 和 Y 值更强大的查询。
标签: postgresql .net-core entity-framework-core ef-core-3.1