2012-06-26 7 views
12

Za każdym razem, gdy przeciągam zmodyfikowaną tabelę do mojego dbml, VS2010 chce, żebym zaktualizował ciąg połączenia, mimo że utworzyłem połączenie danych z dokładną te same informacje. Za każdym razem, gdy to się dzieje, zmienia mój ciąg połączenia na "DataSourceConnectionString" i muszę go usunąć z 5 różnych plików i zastąpić go nazwą ciągu połączenia, którego wcześniej używałam, aby nie zepsuć wszystkich innych użytkowników korzystających z pliku przez kontrola źródła. Jakieś pomysły?Zatrzymaj LINQ na dbml SQL, aktualizując ciąg połączenia, gdy przeciągam tabele do pliku dbml.

Odpowiedz

17

Wymyśliłem kolejne, po majstrowaniu przy odpowiedziach na niektóre, nieco powiązane ze sobą kwestie.

Aby rozwiązać problem, musiałem usunąć połączenie danych utworzone w celu połączenia się z moją bazą danych z poziomu okna przeglądarki serwera w VS2010. Następnie należy otworzyć projektanta .dbml i kliknąć prawym przyciskiem myszy w białym polu i wybrać właściwości. Otworzy się okno właściwości i pojawi się sekcja "Połączenie", kliknij małą strzałkę, aby ją otworzyć. Jeśli klikniesz na wiersz ciągu połączenia, pojawi się przycisk z kropkami (...). Po kliknięciu tego przycisku otworzy się okno Właściwości połączenia. To okno będzie miało już wszystkie te same właściwości połączenia, które posiada już twój plik .dbml. Wystarczy kliknąć "OK", aby automatycznie utworzyć połączenie danych w eksploratorze serwerów, które nie spowoduje dodania nowego ciągu połączenia do pliku .dbml po przeciągnięciu do niego nowego obiektu!

Yay! Koniec z usuwaniem dodatkowych ciągów połączeń za każdym razem, gdy aktualizuję! : D

+0

To jest takie dziwne, ale wielkie dzięki. Nienawidzę tego, że stwardnienie rozsiane właśnie przestało pracować na LINQ do SQL. Jest to sposób na wiele pracy, aby odbudować wszystko za pomocą Entity Framework. – Olaj

+0

Tak! to działa. ale zastanawiam się, jak ?! jak to się robi ?! – Mohammadreza

+0

dziękuję. @Stuck tak to jest dziwne – Mohammadreza

2

Podczas tworzenia wystąpienia DataContext użyj przeciążenia, które pozwala określić ciąg połączenia. To spowoduje nadpisanie wartości, które zostały tam umieszczone przez Projektanta. Na przykład, zamiast po prostu:

DataClasses1DataContext db = new DataClasses1DataContext(); 

użytku:

DataClasses1DataContext db = new DataClasses1DataContext("..connection string.."); 

lub

DataClasses1DataContext db = new DataClasses1DataContext(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString); 

nadzieję, że to jest to, czego szukasz.

+0

Nie myślałem, żeby to zrobić. Byłoby kłopot z wpisaniem tego miliona razy, ponieważ mam klasy statyczne, które nazywam, które wymagają utworzenia DataContext. Wczoraj to wymyśliłem, ale miałem problem od miesięcy, więc chciałem opublikować to tutaj dla innych ludzi. Dziękuję za odpowiedź –

+0

Wygląda na to, że VS 2012 w końcu uzyskał to prawo, nie piecząc łańcucha połączenia w kod. W VS 2012 tworzenie instancji danych bez parametrów wywoła konstruktor odczytujący wartość z AppSettings w pliku web.config. Klucz aplikacji, który jest używany, można zmienić/ustawić na karcie Właściwości pliku dbml. –

Powiązane problemy