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 に答える