تغيير تكوين nhibernate مع nant xmlpoke
-
25-09-2019 - |
سؤال
كيف يمكنني تغيير سلسلة الاتصال من ملف 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.
حظا طيبا وفقك الله!