2

如何使用 nant 从 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>

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

谢谢

4

1 回答 1

7

您正在使用的示例 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 中的所有各个部分添加命名空间前缀的需要。

祝你好运!

于 2010-04-09T08:40:05.773 回答