Свободно NHibernate: Используйте те же файлы отображения для таблиц с одинаковой структурой в разных схемах

Вопрос задан: 1 год назад Последняя активность: 1 год назад
up 21 down

Это мое отображение класса:

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 ответ

Возможно, для Вашего проекта будут необходимы бесплатные векторные карты. На нашем сайте представлены карты для всех стран.

Реклама

up 19 down accepted

Похоже, я должен использовать «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();

Ошибка 505

Что-то пошло не так

Попробуйте воспользоваться поиском