【问题标题】:NodaTime with Linq2DbNodaTime 与 Linq2Db
【发布时间】:2021-05-04 14:23:57
【问题描述】:

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

我正在使用带有 Npgsql 的 PostgreSQL。

【问题讨论】:

    标签: npgsql nodatime linq2db


    【解决方案1】:

    要替换标准 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();
    

    【讨论】:

    • 这行得通。谢谢!我在LoadPostgreSQLMetadata(...) 调用之前添加了GetSchemaOptions.PreferProviderSpecificTypes = true;,以便更精细地控制日期和时间类型,并相应地调整映射。
    猜你喜欢
    • 2022-01-22
    • 2015-07-17
    • 1970-01-01
    • 2019-06-20
    • 1970-01-01
    • 2014-09-28
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多