2013-03-23 14 views
17

Aşağıdakileri app.config dosyasında buldum. Yavaş Cheetah kullanıyorum ve sadece değiştir/config/entityFramework/defaultConnectionFactory/parameters/parametresini değiştirmek istiyorum, böylece bir diff sunucusuna işaret eder. Ben app.config.release içinde ama boşuna aşağıdaki çalıştıkBu düğümü dönüştürmek için doğru xdt: Locator parametresi nedir?

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> 
    </configSections> 
    <appSettings> 
    </appSettings> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" /> 
    </startup> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="data source=.;Integrated Security=SSPI;Initial Catalog=SomeDb;MultipleActiveResultSets=true" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 
    <system.web> 
    <membership defaultProvider="ClientAuthenticationMembershipProvider"> 
     <providers> 
     <add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" /> 
     </providers> 
    </membership> 
    <roleManager defaultProvider="ClientRoleProvider" enabled="true"> 
     <providers> 
     <add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" /> 
     </providers> 
    </roleManager> 
    </system.web> 
</configuration> 

yani değer veri kaynağı = bazı sunucu .....

<entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="data source=dbserver;Integrated Security=SSPI;Initial Catalog=someDb;MultipleActiveResultSets=true" 
        xdt:Transform="Replace" 
        xdt:Locator="XPath(configuration/entityFramework/defaultConnectionFactory/parameters/parameter)" /> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 

da xdt:Locator="Match(parameter)" ve xdt:Locator="XPath(parameter)

ve daha birçok denedim ama işe almak mümkün değil.

cevap

28

Tamam. Biraz aptalca hissediyorum ama çözüm, bir xdt: Locator belirtmem gerekmediğiydi.

App.Release.Config dosyasından bu şekilde çıkarsam eşleşme girdisinin yerini alır.

<parameter value="data source=dbserver;Integrated Security=SSPI;Initial Catalog=someDb;MultipleActiveResultSets=true" 
       xdt:Transform="Replace"/> 
    </parameters> 
+9

Aptalca hissetme, belgelerin hiç de açık değildir! Bulgularınızı gönderdiğiniz için teşekkürler. –

+0

ile aynı sorunu yaşadım. Eşleşmek için kullanacak bir isim yok, bu yüzden değiştirme yöntemini kullandım. –

+0

@TobyJ - Belgeler açık olmayabilir, ancak bunu düşündüğünüzde, konum belirleyici varsayılan konum eşleşmesini ayarlamanıza yardımcı olan bir şeydir. Hiçbir şey vermezseniz, elemanların hiyerarşisi kullanılacaktır. (eğer zincirinizdeki dönüşümünüzdeki her ata elemanında xdt: Locator vermeniz gerekmiyorsa) – arviman

İlgili konular