gpt4 book ai didi

c# - 流利的 nHibernate : Use the same mapping files for tables with the same structure in different schemas

转载 作者:IT王子 更新时间:2023-10-29 04:35:04 27 4
gpt4 key购买 nike

这是我的映射类:

class MyTableMap : ClassMap<MyTable>
{
public MyTableMap()
{
Schema("mySchema");
Id(x => x.id);
Map(x => x.SomeString);
}
}

这适用于我的第一个数据库中的表 ([mySchema].[MyTable])。

但是这个表(“MyTable”)存在于(实际上很多)不同的数据库中,但是由于任何原因,模式总是被命名为不同的(我无法控制):

因此在数据库“OtherDB”中有表 [SomeOtherSchema].[MyTable],其结构与第一个数据库中的 [mySchema].[MyTable] 相同。

出于显而易见的原因,我不想为每个数据库创建不同的映射类。

所以:有没有一种方法可以更改映射类的模式,这样我只需要创建一个映射类(不使用单例!)?

最佳答案

看来我必须使用“DefaultSchema”。所以我使用了这个映射代码:

class MyTableMap : ClassMap<MyTable>
{
public MyTableMap()
{
Id(x => x.id);
Map(x => x.SomeString);
}
}

当我构建 sessionFactory 时,我必须设置 DefaultSchema:

var configure = Fluently.Configure();
var dbConfig = MsSqlConfiguration.MsSql2012.ConnectionString("Data Source=" + dataSource +
";Initial Catalog=" + database +
";Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");

//Here I can set the default schema used by my mappings
var dbConfigWithSchema = dbConfig.DefaultSchema(database);
var fluentDb = configure.Database(dbConfigWithSchema);

var fluentMap = fluentDb.Mappings(mappings);
return fluentMap.BuildSessionFactory();

关于c# - 流利的 nHibernate : Use the same mapping files for tables with the same structure in different schemas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54631983/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com