динамическое изменение имени схемы в файле edmx с использованием структуры сущностей 6 дБ, первый подход с Oracle DB - PullRequest
0 голосов
/ 16 января 2019

У меня есть страница пользовательского интерфейса, которая содержит раскрывающийся список с несколькими значениями.

На странице пользовательского интерфейса пользователь выберет одну схему из раскрывающегося списка, затем данные, связанные с этой схемой, должны быть загружены в сетку. Это означает, что в будущем мы можем получить большее количество схем с одинаковой базой данных и структурой таблиц Oracle.

Контекст объекта уже создан с использованием подхода DB First с конфигурацией по умолчанию. но, исходя из вышеуказанных требований, мне нужно подключиться к базе данных Oracle на основе изменения схемы.

Хотя использование ниже не работает для меня, оно всегда указывает на схему, настроенную в строке подключения, а не на схему, которую я отправляю в контекст сущности.

protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            if (SchemaName != null)
            {
                modelBuilder.HasDefaultSchema(SchemaName);
            }
            base.OnModelCreating(modelBuilder);
            throw new UnintentionalCodeFirstException();
        }

Кто-нибудь может предложить лучший способ сделать это?

Я пытался применить имя схемы при создании модели, как показано выше. Это не сработало для меня.

Фактическая потребность в том, что контекст сущности уже создан с использованием подхода DB First с конфигурацией по умолчанию. но, исходя из вышеуказанных требований, мне нужно подключиться к базе данных Oracle на основе изменения схемы.

1 Ответ

0 голосов
/ 06 февраля 2019

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

Я только что последовал за URL EF6 Dynamic Schema Change , который хорошо работает для меня. Я изменил соединение, чтобы использовать ORACLE, и вызвал этот метод 'connect' из моего сервисного уровня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...