You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从SQLite迁移到PostgreSQL:.NET 6的byte[]和DateTime类型映射咨询

C# 类型到PostgreSQL 14.6的正确类型映射方案

针对你的User实体类中的字段,对应的PostgreSQL类型如下:

1. byte[]类型(PasswordHash、PasswordSalt)

PostgreSQL中对应bytea类型,这是专门用于存储二进制数据的类型,能完美匹配C#的byte[]。

2. DateTime类型(TokenCreated、TokenExpires)

推荐使用timestamp with time zone(可简写为timestamptz),它会存储带时区的时间,和.NET的DateTime(当Kind为Utc或Local时)兼容性更好,能避免时区转换问题。如果业务不需要时区信息,也可以用timestamp without time zone(简写timestamp),但前者适配性更强。

完整DDL示例(my_user表)

CREATE TABLE my_user (
    id SERIAL PRIMARY KEY,
    username VARCHAR(255) NOT NULL UNIQUE,
    password_hash bytea NOT NULL,
    password_salt bytea NOT NULL,
    token_created timestamptz NOT NULL,
    token_expires timestamptz NOT NULL
    -- 可根据你的实体补充其他字段
);

额外提示

如果用EF Core 6的Npgsql提供程序做迁移,它会自动完成这些类型映射,无需手动编写DDL;若手动维护脚本,注意bytea无需指定长度,PostgreSQL会自动处理存储大小,timestamptz支持精确到微秒的时间存储,和.NET的DateTime精度完全匹配。

内容的提问来源于stack exchange,提问作者Đỗ Như Vỹ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 15:50:28