Osobne connectionString dla każdego użytkownika

Wstęp

Jedna baza na programistę jest ogólnie akceptowanym standardem. Niestety nie zawsze możemy doprowadzić do sytuacji, gdzie jedna definicja połączeń do instancji będzie odpowiadała każdemu programiście.

Rozwiązaniem tego problemu jest posiadanie przez każdego użytkownika własnego zestawu definicji połączeń.

Wydzielenie folderu na definicje

  1. Tworzymy folder ConnectionConfigurations
  2. Tworzymy plik: ConnectionConfigurations/ConnectionConfiguration.config
  3. Wycinamy nasze definicje połączeń z Web.config i wklejamy je po drugiej linii nowego pliku
  4. Po tych operacjach nasz plik powinien wyglądać następująco:
    <connectionStrings>
       <clear/>
       <!-- Tu wklejamy definicje -->
       <add name="ConnName" connectionString="ConnStr" />
    </connectionStrings>
    
  5. Teraz w Web.config dodajemy linijke 3:
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <connectionStrings configSource="ConnectionConfigurations/ConnectionConfiguration.config" />
    </configuration>
    
  6. Na tym etapie mamy już wydzielone definicje połączeń do osobnego pliku. Teraz powinniśmy sprawdzić, czy nasza aplikacja się buduje. Jeśli tak przechodzimy do następnej sekcji.

Konfiguracja domyślna

  1. Na początek zmieniamy nazwę ConnectionConfiguration.config na ConnectionConfiguration.default.config
  2. Następnie otwieramy właściwości naszego projektu z plikiem Web.config i przechodzimy do zakładki Build Events
  3. W oknie zatytułowanym Pre-build event command line wprowadzamy następującą komendę:
    if exist $(ProjectDir)ConnectionConfigurations\ConnectionConfiguration.default.config (echo f|xcopy /Y $(ProjectDir)ConnectionConfigurations\ConnectionConfiguration.default.config $(ProjectDir)ConnectionConfigurations\ConnectionConfiguration.config)
    

    Linijka służy do skopiowani domyślnej konfiguracji:

    • Warunek if sprawdza czy plik istnieje, i jeśli tak, wykonywana jest komenda kopiująca
    • Xcopy odpowiada za skopianie pliku ze ścieżki źródłowej do docelowej
    • Parametr f, przekazany przez echo, informuje że kopiowany będzie plik
    • Flaga /Y wyłącza pytanie o nadpisanie pliku
    • $(ProjectDir) to makro zwracające ścieżkę głównego folderu aktualnego projektu
  4. Teraz sprawdzamy czy projekt się buduje. Jeśli tak, a projekt po uruchomieniu działa poprawnie przechodzimy dalej.

Osobna konfiguracja dla każdego użytkownika

  1. Tworzymy nowy plik ConnectionConfigurations\ConnectionConfiguration..config, np.: ConnectionConfigurations\ConnectionConfiguration.rafal.config. Powinien on wyglądać jak onnectionConfiguration.default.config, ale zawierać dogodne dla nas definicje połączeń
  2. Nastepnie w Pre-build event command line dodajemy po naszym wpisie kolejną linijkę o następującej treści:

    if  $(ConfigurationName) == Debug (if exist $(ProjectDir)ConnectionConfigurations\ConnectionConfiguration.$(username).config (echo f|xcopy /Y $(ProjectDir)ConnectionConfigurations\ConnectionConfiguration.$(username).config $(ProjectDir)ConnectionConfigurations\ConnectionConfiguration.config))
    
  3. W tym wypadku mamy zagnieżdżonego ifa – niestety nie udało mi się wymusić operacji oraz.

    • Pierwszy if sprawdza czy jesteśmy w Debug – szybkie obejście, żeby nie publikować własnych połączeń na serwery
    • Makro $(username) pobiera aktualną nazwę użytkownika.
    • Komendy wykonują się kolejno, więc jeśli jakiś użytkownik ma swój plik, jego zmiany nadpiszą konfigurację domyślną
  4. Sprawdź czy działa – jeśli tak jesteśmy w domu

Na koniec dodam, że główną inspiracją był ten post.

Leave a Reply

Your email address will not be published. Required fields are marked *