从EA到nHibernate的连接字符串
本文关键字:连接 字符串 nHibernate EA | 更新日期: 2023-09-27 18:16:38
我正在写插件到EA,我有连接字符串的问题。如何使用连接字符串从EA.Repository
在nHibernate?或者如何从EA提取连接细节。我可以有user id
, db type
,但例如,我不知道如何提取数据库的名称。
DBMS连接字符串是很难驯服的野兽,因为格式是可扩展的,因此为了正确解析一个连接字符串,您需要考虑到各种DBMS提供程序想要实现的任何扩展。EA并没有让事情变得更简单,实际上它会重载连接字符串。
您可以从Repository.ConnectionString
属性中检索EA所引用的连接字符串。对于EAP文件,这只是文件名。在DBMS的情况下,它是EAConnectString:<name> --- DBType=<type_nr>;Connect=<connection_string>
形式的字符串。
<name>
是一个符号名称,它可以是任何东西,它不需要或保证是特定数据库的名称。<type_nr>
是EA对DBMS类型的内部数字标识。这些都没有文档记录,但可以通过一些测试推断出来。Repository.RepositoryType()
可能会有所帮助。最后,<connection_string>
是DBMS的连接字符串。
因此,如果您切断所有直到并包括Connect=
的内容,您应该最终得到ODBC将识别的连接字符串。在这个"正确的"连接字符串中,您将找到Data Source=<source>
和Initial Catalog=<db_name>
。<source>
通常是服务器和端口,<db_name>
是数据库的名称。
注意,EA在连接到DBMS时支持"延迟加载"模式。在这种模式下,数据库的内容只在需要时读取(即在项目浏览器中展开节点或打开图表时)。如果以这种模式打开了存储库,则连接字符串以LazyLoad=1;
结束,因此您也需要将其截断。