首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq2DB参数化架构

Linq2DB参数化架构
EN

Stack Overflow用户
提问于 2018-12-29 12:58:40
回答 1查看 508关注 0票数 0

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

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

代码语言:javascript
复制
[Table(Schema="ABC", Name="USERS")]

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

代码语言:javascript
复制
[Table(Schema="XYZ", Name="USERS")]

我还没有完全弄清楚我将如何在生产中实现这一点。以前有没有人处理过这个问题?有没有办法用DataContext做到这一点呢?或者可能通过深入研究映射的内部结构?任何想法或想法都是值得感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-29 19:50:51

我建议根据您的情况使用fluent映射或配置。

对于fluent映射,将模式名称传递给fluent映射构建器函数:

代码语言:javascript
复制
void ConfigureMappings(MappingSchema ms, string schema)
{
    ms.GetFluentMappingBuilder()
        .Entity<Users>()
            .HasSchemaName(schema)
    // configure columns and other entities
}

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

代码语言:javascript
复制
[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
{...}

这种方法(带有配置)也可以用于fluent mapper。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53966833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档