0

Я пишу addin для EA, и у меня есть проблема со строкой подключения. Как использовать строку подключения от EA.Repository в nHibernate? Или как извлекать детали соединения от EA. У меня может быть user id, db type, но, к примеру, я не знаю, как извлечь имя базы данных.Строка подключения от EA до nHibernate

ответ

2

Строки соединения СУБД - это жесткие звери для приручения, поскольку формат является расширяемым и, следовательно, для правильного анализа одного из них необходимо учитывать любые расширения, которые, по мнению различных поставщиков СУБД, были реализованы. EA не упрощает и фактически перегружает строки подключения.

Вы можете получить то, что EA обозначает как строку соединения из свойства Repository.ConnectionString. В случае файла EAP это просто имя файла. В случае с СУБД это строка в форме EAConnectString:<name> --- DBType=<type_nr>;Connect=<connection_string>.

<name> - это символическое имя, которое может быть чем угодно вообще, не обязательно или гарантировано является именем конкретной базы данных. <type_nr> - это внутренний цифровой идентификатор EA для типа СУБД. Они недокументированы, но могут быть обсуждены с небольшим количеством испытаний. Repository.RepositoryType() может помочь. <connection_string>, наконец, является строкой соединения СУБД.

Итак, если вы отрубите все до Connect=, вы должны указать строку соединения, которую распознает ODBC. Внутри этой «правильной» строки подключения вы найдете Data Source=<source> и Initial Catalog=<db_name>. <source> обычно является сервером и портом, а <db_name> - это имя базы данных.

Обратите внимание, что EA поддерживает режим «ленивой загрузки» при подключении к СУБД. В этом режиме содержимое базы данных считывается только тогда, когда они необходимы (т. Е. При расширении узла в браузере проекта или при открытии диаграммы). Если хранилище было открыто в этом режиме, строка подключения заканчивается с LazyLoad=1;, так что вам тоже нужно отрубить это.

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