如何连接字符串从nhibernate.config文件使用恶性改变

的问题是,所有实施例是关于改变属性值,但NHibernate的具有内部文本

当量:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
 <session-factory>
    <property name="connection.connection_string">Data Source.\server;Database=UnitTestDb;UID=user;pwd=pass;</property>
    <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="show_sql">true</property>
    <property name="connection.release_mode">auto</property>
    <property name="adonet.batch_size">500</property>
    ....

我需要变化特性connection.connection_string

<xmlpoke        file="${nhibernate.file}"
        xpath="/hibernate-configuration/session-factory/add[@key='connection.connection_string']/@value"
        value="${connection.string}">
</xmlpoke>

此不起作用在这种情况下。

由于

有帮助吗?

解决方案

您正在使用的样品的xpath引用名为add与称为key属性的元素。在你的情况,你正在寻找一个名为property属性name元素。

接着,由于要改变@value元件上的内文本,而不是property属性应该删除尾随属性参考。

最后,由于NHibernate的XML有一个特定的命名空间,你将不得不通知的 xmlpoke 以使用正确的命名空间。

所以任务应该是这样的:

<xmlpoke file="${nhibernate.file}"
    xpath="/nhc:hibernate-configuration/nhc:session-factory/nhc:property[@name='connection.connection_string']"
    value="${connection.string}">
    <namespaces>
        <namespace prefix="nhc" uri="urn:nhibernate-configuration-2.2" />
    </namespaces>
</xmlpoke>

注:我没有测试出来,但是一般的XML / XPath的规则在这里工作,所以我希望它的作品。此外,这可能是因为有一种方法来指示xmlpoke指定的命名空间应该是默认的,因此无需在命名空间前缀都在XPath的各个部分。

祝你好运!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top