流利的nHibernate:对不同架构中具有相同结构的表使用相同的映射文件

时间:2019-02-11 13:47:33

标签: c# fluent-nhibernate schema

这是我的映射类:

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

这对于我的第一个数据库中的表([mySchema]。[MyTable])很好。

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

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

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

所以:有没有一种方法可以更改映射类的架构,所以我只需要创建一个映射类(无需使用singelton!)?

1 个答案:

答案 0 :(得分:19)

似乎我必须使用“ DefaultSchema”。因此,我使用了以下映射代码:

use [database];

构建sessionFactory时,必须设置DefaultSchema:

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