سؤال

كيف يمكنني تغيير سلسلة الاتصال من ملف nhibernate.config باستخدام NANT

المشكلة هي أن جميع الأمثلة تدور حول تغيير قيمة السمة ، ولكن 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_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