【问题标题】:Linq2DB Parameterized SchemaLinq2DB 参数化模式
【发布时间】:2018-12-29 04:58:40
【问题描述】:

好的,这绝对是我关于 Linq2DB 的最后一个问题!也许……

我已经通过 Linq2DB 完成了一个针对 DB2/iSeries 数据的项目的一些学习曲线。一个问题是,虽然我的代码在测试数据库上运行得很好,但在生产中它需要为相同的对象指向不同的模式。例如,一个环境中的特定用户类将具有如下表映射:

[Table(Schema="ABC", Name="USERS")]

在另一个环境中它可能看起来像:

[Table(Schema="XYZ", Name="USERS")]

我还没有完全弄清楚如何在生产中解决这个问题。以前有没有人处理过这个问题?有没有办法用 DataContext 做到这一点?或者可能通过深入研究映射的内部?任何想法或想法表示赞赏!

【问题讨论】:

    标签: linq2db


    【解决方案1】:

    我建议为您的案例使用流畅的映射或配置。

    对于流畅的映射,将架构名称传递给流畅的映射构建器函数:

    void ConfigureMappings(MappingSchema ms, string schema)
    {
        ms.GetFluentMappingBuilder()
            .Entity<Users>()
                .HasSchemaName(schema)
        // configure columns and other entities
    }
    

    基于配置的解决方案:测试和生产环境使用不同的配置,并将配置名称传递给数据连接构造函数:

    [Table(Schema="ABC", Name="USERS", Configuration="test")]
    [Table(Schema="XYZ", Name="USERS", Configuration="production")]
    public class User
    {...}
    
    // or make test configuration default and override it for production where it differ from default
    [Table(Schema="ABC", Name="USERS")]
    [Table(Schema="XYZ", Name="USERS", Configuration="production")]
    public class User
    {...}
    

    这种方法(带有配置)也可以用于流畅的映射器。

    【讨论】:

    • 谢谢!使用流利的映射方法,我能够在基本级别上完成这项工作。这样就可以将我的库用于安装此特定应用程序的任意系统。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 2023-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多