Niemożliwość wykonania migracji Entity Frameworka dla Postgresql

0

Cześć!

Po skopiowaniu wszystkiego z tegoż tutorialu:
https://medium.com/@geekrodion/blog-with-asp-net-core-and-react-redux-part-1-authentication-94b11b1a1bc4
Dograłem nuget Npgsql.EntityFrameworkCore.PostgreSQL aby obsłużyć następujący ConnectionString:

  "ConnectionStrings": {
    "IntranetContext": "Server=localhost;Database=blog;Username=blogadmin;Password=blogadmin"
  },

Cokolwiek nie zrobię z samym connection stringiem każda próba updatu bazy danych kończy się otrzymaniem komunikatu:

Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia

Podjąłęm również próbę zmiany providera na SQLite (doinstalowuje wówczas odpowiedni Nuget i zmieniam "UseNpgsql" na "UseSqLite" w pliku startup), jednak wówczas migrator nie rozpoznaje praktycznie żadnego z parametrów connection stringa. Nie ma znaczenia, czy wpiszę "Server" czy "Data Source" lub "Database" czy "Initial Catalog" zawsze kończę z komunikatem, że

initial catalog' is an invalid connection string attribute

Gdyby ktokolwiek miał pomysł na bezproblemowe postawienie takiej bazy, poprzez rozwiązanie któregokolwiek z tych dwóch problemów lub podanie zupełnie innego providera byłbym szalenie wdzięczny.

Pozdrawiam serdecznie!

0

Connection stringi sa rozne dla roznych baz danych.W twoim przykladzie Server=localhost jest bledny, musisz podac konkretny serwer bazy danych, a wiec nazwe Twojej lokalnej instancji PostgreSQL

0
Aventus napisał(a):

Connection stringi sa rozne dla roznych baz danych.W twoim przykladzie Server=localhost jest bledny, musisz podac konkretny serwer bazy danych, a wiec nazwe Twojej lokalnej instancji PostgreSQL

Dzięki za odpowiedź! Zainstalowałem sobie program pgAdmin 4 to managementu postgressem. Stworzyłem Administratora, nadałem mu hasło i pełną władzę nad bazą. Z connection stringiem:

"Server=127.0.0.1;port=5432;...

Dostaje obecnie komunikat, że

Autoryzacja hasłem nie powiodła się dla użytkownika ...

Jest to o tyle dziwne, że sprawdzałem kilka razy zgodność bazy i connection stringa i wszystko zdaje się zgadzać. Jeśli ustawię niewłaściwy port dostaję info, że serwer aktywnie odmawia połączenia, co częściowo rozwiązuje zagadkę z posta.

0

Czy możesz się zalogować manualnie używając loginu i hasła które stworzyłeś?

0
Aventus napisał(a):

Czy możesz się zalogować manualnie używając loginu i hasła które stworzyłeś?

Głupia sprawa...
wpisałem 127.0.0.1:5432 jako servername i podałem stworzone credentiale w Microsoft SQL Server Management Studio i nie można odnaleźć ścieżki sieciowej, co w sumie nie dziwi. W dedykowanym postgresowi pg Adminie opcja przelogowania się jest wyłączona
https://www.postgresql.org/message-id/4D12159E.10601%40iol.ie

0

W przypadku Microsoft SQL Server po prostu użyj NAZWY serwera, np. MySqlInstance. Zapewne z Postgre można zrobić tak samo. Skoro masz to lokalnie to nie używaj IP.

0
Aventus napisał(a):

W przypadku Microsoft SQL Server po prostu użyj NAZWY serwera, np. MySqlInstance. Zapewne z Postgre można zrobić tak samo. Skoro masz to lokalnie to nie używaj IP.

Też nie działa, nazwy serwerów są podane, niestety nic to nie zmienia :(

0

U mnie takie coś działało. Oczywiście też na postgresie

"ConnectionStrings": {
    "At-Self": "Host=localhost;Port=5432;Database=At-Self;Username=postgres;Password=local"
  },
0
szydlak napisał(a):

U mnie takie coś działało. Oczywiście też na postgresie

"ConnectionStrings": {
    "At-Self": "Host=localhost;Port=5432;Database=At-Self;Username=postgres;Password=local"
  },

A tworzyłeś wcześniej tą bazę i usera?

0

Wkleiłem chamsko Twój connection string i dostałem komunikat, że "Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia"

0

Bazę SQLem robiłem

0
szydlak napisał(a):

Bazę SQl robiłem

Czyli stworzyłeś gołą bazę bez tabel i nadałeś db ownera i nic więcej? Resztę zrobiła migracja?

0

Nie, wszystko robiłem sql. Tabele relacje itp

0
szydlak napisał(a):

Nie, wszystko robiłem sql. Tabele relacje itp

PgAdmin, czy masz do polecenia coś lepszego?

0

Nic lepszego nie mam. Ja z tego nawet nie korzystałem za dużo. SQLe miałem w programie konsolowym. Tzn on zaczytywał pliki *.sql i wykonywał.

0
szydlak napisał(a):

Nic lepszego nie mam. Ja z tego nawet nie korzystałem za dużo. SQLe miałem w programie konsolowym. Tzn on zaczytywał pliki *.sql i wykonywał.

Rozumiem, dzięki :)

0

Dzięki. Mając tak dużo problemów z ET. Zastanawiam się nad przejściem na dappera, o którym na chwilę obecną nie mam pojęcia. Myślicie, że ma to sens, czy lepiej brnać w ET, może eksperymentując z providerami?

1

Co ma provider czy orm do tego, że Nie można nawiązać połączenia, ponieważ komputer docelowy aktywnie go odmawia?

Jak oraz gdzie postawiłeś tego postgresa, bo to tutaj jest problem.

PS: W ogóle połączyłeś się do tej bazy z poziomu PGAdmina?

0
wladekarek napisał(a):

Dzięki. Mając tak dużo problemów z ET. Zastanawiam się nad przejściem na dappera, o którym na chwilę obecną nie mam pojęcia. Myślicie, że ma to sens, czy lepiej brnać w ET, może eksperymentując z providerami?

O czym Ty piszesz? Ty zwyczajnie nie możesz się połączyć z bazą (jakąkolwiek) bo albo dajesz zły format connection string, albo podajesz złe dane logowania do bazy. Czego nie rozumiesz? Błąd jest tylko i wyłącznie po Twojej stronie i nie ma znaczenia ani jakiej bazy używasz, ani jakiego ORMa. Zacznij od początku i się skup. Powiedzmy że chcesz stworzyć bazę w SQL Server. Wchodzisz w SQL Server Management Studio i towarzysz tam bazę. Jak już to zrobisz to odezwij się tutaj po dalsze instrukcje, upewniajac się że wiesz jak nazywa się Twój serwer SQL. Nie, localhost ani 127.0.0.1 to nie są prawidłowe odpowiedzi.

EDIT
Ewentualnie użyj LocalDB:
Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=<NAZWA BAZY JAKA CHCESZ>;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\<NAZWA PLIKU BAZY>.mdf

0

Wariantu z (LocalDb)\MSSQLLocalDB też prubowałem, ten sam efekt. Ze stworzeniem bazy w management studio też mam problem, bo SQL express nie pojawia mi się w usługach windows, też trudno powiedzieć dlaczego. Wariant z wpisaniem kropki i uwierzytelnianiem windows też prubowałem, nie łączy się. Jeśli można się dostać do punktu, w którym będę mógł stworzyć bazę w managementstudio chętnie prosiłbym o pomoc.
Stąd pomysł na postgresa, którego mogę sobie odpalić z dowolnego innego programu, lecz tutaj nie chce mi się logować.
W Sqlite nie interpretuje mi żadnego z atrybutów. Też trudno powiedzieć czemu. Kiedy ostatnio robiłem cokolwiek w ET pamiętam, że nie było potrzeby tworzenia jakiejkolwiek bazy na zewnątrz. Wystarczyło podać lokacje w connection stringu a on zrobił resztę. Nie wiem dlaczego teraz nic mi się nie tworzy :(

0

Wystarczyło podać lokacje w connection stringu a on zrobił resztę. Nie wiem dlaczego teraz nic mi się nie tworzy

Musiałeś używać LocalDB. Próbowałeś użyć dokładnie ten connection string jaki wysłał Ci @WeiXiao? Jeśli nie to użyj. Jeśli wyskoczy Ci blad to sprawdź jakiego connection stringa używa EF próbując się połączyć. Daj tutaj na forum tego connection stringa.

0

A nie masz czasem solucji podzielonej na kilka projektów? Bo może robisz update-database na złej warstwie?

0
szydlak napisał(a):

A nie masz czasem solucji podzielonej na kilka projektów? Bo może robisz update-database na złej warstwie?

Chciałem być uber pro i mieć osobno projekt z modelami kontekstami itp, ale w natłoku problemów mam teraz wszystko w jednym miejscu.
Po urzyciu Connection stringa:

"SQLXpress":"Server=.\\SQLExpress;Database=baza_danych;Trusted_Connection=Yes;"

i zmianie na

                    options.UseSqlServer(
                        Configuration.GetConnectionString("SQLXpress")));

dostaję następujący komunikat:

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

Edit: Mam zainstalowane SQLEXPR_x64_ENU, jednak nie widać go w usługach. Może to jest przyczyna wystąpienia owego błędu.

0

Dodałwm ów string do projektu, w którym modelem była jedna klasa z dwoma polami (id i testValue), rzecz jasna jedną pozycją w kontekście i niczym więcej i efekt jest ten sam.
Dodam, że cały stuff (EntityFrameworkCore.tools i .design) mam w wersji 2.2, podobnie jak .net target.
Pozostałe nugety (jak te do obsługi sqllite czy postgresql) brałem po prostu najnowsze,

0

ja nie widać w usługach to masz przyczynę.

0

Jak masz się połączyć jeżeli nie masz SQL Expressa.

https://www.microsoft.com/pl-pl/sql-server/sql-server-editions-express

0
WeiXiao napisał(a):

Jak masz się połączyć jeżeli nie masz SQL Expressa.

https://www.microsoft.com/pl-pl/sql-server/sql-server-editions-express

Instalowałem toto, przeinstalowywałem (na podowną instalację bez odinstalowania instalator nie pozwala) również z wyłączonym firewallem, jak sugerował wizard. Nadal nie mam takiej usługi.

Podczsa pruby zainstalowania SQL Server Replication dostałem możliwość wpisania:

Default instance: SQLExpress

Service: SQL Server Database Engine
Account Name: SuperUser
Password SuperPassword
StartupType: Automatic

I dostaję błąd
[Error Message]
The specified credentials for the SQL Server service are not valid. To continue, provide a valid account and password for the SQL Server service.

[Details]
Microsoft.SqlServer.Configuration.SqlEngine.ValidationException: The specified credentials for the SQL Server service are not valid. To continue, provide a valid account and password for the SQL Server service.

Zgodnie z tym postem powinno być ok.
https://stackoverflow.com/questions/11932573/credentials-for-the-sql-server-agent-service-are-invalid

1 użytkowników online, w tym zalogowanych: 0, gości: 1