好的,这绝对是我关于Linq2DB的最后一个问题!也许...
对于使用DB2 / iSeries数据的项目,我已经使用Linq2DB进行了一些学习。但是,一个问题是,尽管我的代码可以很好地针对我的测试数据库运行,但在生产中,它将需要针对同一对象指向不同的架构。例如,在一个环境中的特定用户类将具有如下表映射:
[Table(Schema="ABC", Name="USERS")]
在另一个环境中,它可能看起来像:
[Table(Schema="XYZ", Name="USERS")]
我还没有弄清楚如何在生产中实现这一目标。有人处理过吗?有没有办法用DataContext做到这一点?还是可能通过深入研究映射的内部?任何想法都可以得到赞赏!
答案 0 :(得分:2)
我建议为您的案例使用流利的映射或配置。
对于流利的映射,将架构名称传递给流利的映射构建器函数:
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
{...}
这种方法(带有配置)也可以用于流利的映射器。