Linq2DB Параметризованная Схема - PullRequest
0 голосов
/ 29 декабря 2018

Хорошо, это, безусловно, мой последний вопрос о Linq2DB!Может быть ...

Я прошел через некоторые этапы обучения с Linq2DB для проекта, который будет работать с данными DB2 / iSeries.Одна проблема заключается в том, что, хотя мой код работает с моей тестовой базой данных очень хорошо, в производственной среде он должен будет указывать на разные схемы для одних и тех же объектов.Например, определенный пользовательский класс в одной среде будет иметь отображение таблицы, например:

[Table(Schema="ABC", Name="USERS")]

, в другой среде это может выглядеть так:

[Table(Schema="XYZ", Name="USERS")]

Я не совсем понял,как я подойду к этому в производстве.Кто-нибудь имел дело с этим раньше?Есть ли способ сделать это с DataContext?Или, возможно, копаясь во внутренностях отображения?Любые мысли или идеи приветствуются!

1 Ответ

0 голосов
/ 29 декабря 2018

Я бы порекомендовал использовать потоковое сопоставление или конфигурации для вашего случая.

Для имени схемы плавного сопоставления передать функции построителя потокового сопоставления:

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
{...}

Этот подход (с конфигурациями) также может использоваться для беглого отображения.

...