2016-12-08 14 views
1

Итак, я использую dotConnect for Oracle. Я использовал шаблон и мастер для создания модели базы данных (первый подход к базе данных). У нас есть несколько баз данных, которые нужно связать с одним приложением, и, к сожалению, имена схем, которые содержат таблицы, не являются однородными во всех других базах данных.Изменение имени схемы в Runtime в контексте данных

В автогенерируемой класс в файле Designer.cs я получаю:

[Table(Name = @"FMC_TP.EQUIPMENT")] 

Но учитывая, какое соединение с базой данных схемы может быть:

[Table(Name = @"FMC_DEV.EQUIPMENT"] 

Есть ли способ изменить схему для отображение во время выполнения?

ответ

1

В Oracle вы можете вызвать оператор alter session set current_schema = SCHEMA_NAME, который устанавливает контекс вашей сессии. Затем вы можете обойтись без префикса таблиц с именем схемы, но это может помочь, только если вы используете один и тот же сеанс для всех операторов.

+0

Я использую 4 разные схемы одновременно. Поэтому, я думаю, мне нужно будет менять каждый раз, когда создаю сеанс. Это стоит того. –

+0

@FelixCastor Да, если за один сеанс вы используете таблицы из разных схем, вам нужно выполнить команду несколько раз, но она позволяет сохранять имена таблиц без имен схем и динамически устанавливать их, выполняя несколько «alter» – Kacper

+0

Работали как шарм! –

1

В случае, если кто имеет подобный вопрос я расширится на ответ Kacper в:

В файле модели MyModel.lqml я удалил спецификации схем из имен таблиц:

<Table Name="SCHEMA.TABLE" Member="ModelTableName"> 

в

<Table Name="TABLE" Member="ModelTableName"> 

В принципе, если применимо.

В коде:

MyModelDataContext mycontext = new MyModelDataContext(); 

mycontext.ExecuteCommand($"ALTER SESSION SET CURRENT_SCHEMA = {Schema}", new object[1]); 

Затем выполнить мой запрос.

  var rows = from x in mycontext.ModelTableName 
          where x.COLUMN == id 
          select x; 
0

Существует дополнительный способ выполнить команду сразу после установления соединения: установите команду (или несколько команд) с помощью Run После того, как команда (или инициализации команд) параметр строки соединения. Для получения дополнительной информации см. https://www.devart.com/dotconnect/oracle/docs/?Devart.Data.Oracle~Devart.Data.Oracle.OracleConnection~ConnectionString.html.

 Смежные вопросы

  • Нет связанных вопросов^_^