【问题标题】:Does Npgsql expose a strongly-typed list of PostgreSQL column types?Npgsql 是否公开了 PostgreSQL 列类型的强类型列表?
【发布时间】:2019-10-06 00:27:18
【问题描述】:

Npgsql 在 System.Net.IPAddress 和 Postgres 的 inet 列类型之间提供 a mapping

我的 EF Core 配置包含:

builder
  .Property(p => p.IPAddress)
  .HasColumnType("inet")          // I want to avoid this magic string
  .Required();

我知道我可以忽略它,但我想明确一点。

Npgsql 是否有我可以使用的常量、枚举或类型来代替硬编码"inet"

(例如,NpgsqlColumnTypes.IPAddress 等于 "inet"。)

【问题讨论】:

    标签: .net postgresql entity-framework-core npgsql


    【解决方案1】:

    您可以打开一个 NpgsqlConnection,访问它的 TypeMapper 并在其上枚举 Mappings - 这应该会为您提供 Npgsql 在该特定 PostgreSQL 上支持的所有 PostgreSQL 类型。

    但是,这确实没有必要。将类型名称简单地嵌入为字符串是标准做法。它们是众所周知的稳定名称,永不改变。

    【讨论】:

    • 是的,我知道,但根据我的经验,问题不在于这些标识符会改变,而是我或维护我的代码的人会意外炸毁某些东西。所以我总是尽量避免使用魔法弦,如果可以的话。我猜我只会制作自己的一组常量。感谢这个有趣的想法!
    猜你喜欢
    • 2010-11-20
    • 1970-01-01
    • 2016-05-31
    • 2015-09-28
    • 2021-05-30
    • 1970-01-01
    • 2014-11-27
    • 1970-01-01
    • 2019-01-05
    相关资源
    最近更新 更多