NodaTime 与 Linq2Db

NodaTime with Linq2Db

如何在 Linq2Db 中配置 T4 POCO 生成以生成使用 NodaTime 类型而不是 System.DateTime 的模型?

我正在使用带有 Npgsql 的 PostgreSQL。

要替换标准 DateTime 类,您必须按以下方式修改 T4 模板:

// loading database schema
LoadPostgreSQLMetadata(...)

// modifying default mapping
foreach (var t in Tables.Values)
{
    foreach (var c in t.Columns.Values)
    {
        switch (c.Type)
        {
            case "DateTime"       : c.Type = "NodaTime.LocalDateTime";   break;
            case "DateTime?"      : c.Type = "NodaTime.LocalDateTime?";  break;
            case "DateTimeOffset" : c.Type = "NodaTime.OffsetDateTime";  break;
            case "DateTimeOffset?": c.Type = "NodaTime.OffsetDateTime?"; break;
        }
    }
}

// generating model
GenerateModel();