好了,这绝对是我关于Linq2DB的最后一个问题了!也许..。
我用Linq2DB完成了一个使用DB2/iSeries数据的项目的学习过程。但有一个问题是,虽然我的代码在测试数据库上运行良好,但在生产中,它需要为相同的对象指向不同的模式。例如,某个环境中的特定user类将具有如下表映射:
[Table(Schema="ABC", Name="USERS")]在另一个环境中,它可能看起来像这样:
[Table(Schema="XYZ", Name="USERS")]我还没有完全弄清楚我将如何在生产中实现这一点。以前有没有人处理过这个问题?有没有办法用DataContext做到这一点呢?或者可能通过深入研究映射的内部结构?任何想法或想法都是值得感谢的!
发布于 2018-12-29 19:50:51
我建议根据您的情况使用fluent映射或配置。
对于fluent映射,将模式名称传递给fluent映射构建器函数:
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
{...}这种方法(带有配置)也可以用于fluent mapper。
https://stackoverflow.com/questions/53966833
复制相似问题