Błędy po kompilacji przykładowego kodu z kursu ze strony Microsoftu

0

Zaczynam się uczyć C# i ASP.NET. Pobrałem Visual Studio Community, wszedłem w tutorial "Getting Started" ze strony Mircosoftu, zaczynam czytać i przepisywać.
Skopiowałem kod klasy ProductContext i już widzę, że IDE się burzy w kilku miejsach.

using System.Data.Entity;
namespace WebApplication2.Models
{
    public class ProductContext : DbContext
    {
        public ProductContext() : base("WebApplication2")
        {
        }
        public DbSet<Category> Categories { get; set; }
        public DbSet<Product> Products { get; set; }
    }
}

Błędy, warningi:

Typ lub przestrzeń nazw „Entity” nie występuje w przestrzeni nazw „System.Data” (czy nie brakuje odwołania do zestawu?)
Nie można znaleźć nazwy typu lub przestrzeni nazw „DbContext” (brak dyrektywy using lub odwołania do zestawu?)
Nie można znaleźć nazwy typu lub przestrzeni nazw „DbSet<>” (brak dyrektywy using lub odwołania do zestawu?)

Podobnych błędów jest jeszcze kilka w innych plikach.
Nie wiem gdzie mam to podpiąć, żeby np. klasa DbContext była widoczna. IDE podpowiada, żeby zamienić DbContext na WebContext i dodać "using System.Web.Configuration;", ale wtedy pojawiają się inne błędy i nawet nie wiem co robię podmieniając tak na pałę, bo w tutorialu nic o tym nie jest wspomniane.

W tutorialu jest użyty Microsoft VIsual Studio 2013, ale chyba powinno się używać teraz Community(?). Po utworzeniu projektu już widzę, że się trochę różni od tego z tutoriala, bo nie mam katalogu "Account", musiałem też utworzyć katalog "Models".
Może ktoś coś podpowiedzieć?

0

https://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext(v=vs.113).aspx

Jak widzisz klasa DbContext znajduje się w przestrzeni nazw System.Data.Entity. Musisz dodać tą bibliotekę do swojego projektu.

0

Nie wiem czy dobrze to zrobiłem, ale kliknąłem PPM na "Odwołania" -> "Dodaj odwołanie" -> zaznaczyłem "System.Data.Entity" i teraz linia

using System.Data.Entity; 

już nie jest podkreślona na czerwono, ale błąd z DbContext cały czas jest ten sam. Ponowna kompilacja nic nie daje, może trzeba coś odświeżyć?

0

Zgodnie z https://stackoverflow.com/questions/5741109/the-type-or-namespace-name-dbcontext-could-not-be-found zainstalowałem EntityFramework z NuGet i to załatwiło sprawę. (PPM na projekt -> Zarządzaj pakietami NuGet)

0

W tutorialu jest użyty Microsoft VIsual Studio 2013, ale chyba powinno się używać teraz Community(?). Po utworzeniu projektu już widzę, że się trochę różni od tego z tutoriala, bo nie mam katalogu "Account", musiałem też utworzyć katalog "Models".

Czy używasz VS2013 Express, czy VS2015 Community, czy VS2017 Community prawie nie ma znaczenia, niektóre opcje są po prostu w troszkę innych miejscach, ew. domyślnie jest inna wersja czegoś. Jeżeli chcesz, aby działało idealnie jak w poradniku używaj wersji z poradnika.

Katalog "Account" (i rzeczy związane z kontami użytkowników) zrobi ci się tylko jeżeli tworzysz projekt używając szablonu, w którym masz zaznaczone, aby dodał uwierzytelnianie.

W poradniku masz powiedziane, że Entity Framework doda ci się jeżeli używasz szablonu "ASP.NET Web Application using the Web Forms" i że zarządza się nim właśnie przez NuGet - jeżeli ci się nie dodał, to dokładnie musisz go doinstalować jak napisałeś wyżej :-)

0

Mam kolejnym problem z tym przykładem. Zgaduję, że chodzi o bazę danych. Przeszedłem do następnego kroku z dodaniem listView, w którym jest data binding i teraz po kompilacji, na localhoscie widzę błąd. Przy dodawaniu informacji o połączeniu w pliku Web.Config nie miałem w ogóle znacznika <connectionStrings>, a według przykładu powinno tam być już wpisane jedno połączenie domyślne. Również katalog AppData jest pusty a powinien tam być plik .mdf.


Błąd serwera w aplikacji '/'.

Wystąpił błąd związany z siecią lub wystąpieniem podczas ustanawiania połączenia z serwerem programu SQL Server. Nie można odnaleźć serwera lub jest on niedostępny. Sprawdź, czy nazwa wystąpienia jest poprawna i czy konfiguracja serwera programu SQL Server zezwala na połączenia zdalne.  (provider: SQL Network Interfaces, error: 50 - Wystąpił błąd programu Local Database Runtime. Cannot create an automatic instance. See the Windows Application event log for error details.)

Opis: Podczas wykonywania bieżącego żądania sieci Web wystąpił nieobsługiwany wyjątek. Aby uzyskać dodatkowe informacje o błędzie i miejscu jego występowania w kodzie, przejrzyj ślad stosu. 

Szczegóły wyjątku: System.Data.SqlClient.SqlException: Wystąpił błąd związany z siecią lub wystąpieniem podczas ustanawiania połączenia z serwerem programu SQL Server. Nie można odnaleźć serwera lub jest on niedostępny. Sprawdź, czy nazwa wystąpienia jest poprawna i czy konfiguracja serwera programu SQL Server zezwala na połączenia zdalne.  (provider: SQL Network Interfaces, error: 50 - Wystąpił błąd programu Local Database Runtime. Cannot create an automatic instance. See the Windows Application event log for error details.)

Błąd źródła: 

Podczas wykonywania bieżącego żądania sieci Web został wygenerowany nieobsługiwany wyjątek. Informacje dotyczące pochodzenia i lokalizacji wyjątku można zidentyfikować przy użyciu poniższego śladu stosu wyjątku. 

[SqlException (0x80131904): Wystąpił błąd związany z siecią lub wystąpieniem podczas ustanawiania połączenia z serwerem programu SQL Server. Nie można odnaleźć serwera lub jest on niedostępny. Sprawdź, czy nazwa wystąpienia jest poprawna i czy konfiguracja serwera programu SQL Server zezwala na połączenia zdalne.  (provider: SQL Network Interfaces, error: 50 - Wystąpił błąd programu Local Database Runtime. Cannot create an automatic instance. See the Windows Application event log for error details.)]

   System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling) +830

   System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +329

   System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions) +38
...
1

Zmień język IDE na angielski i odinstaluj polski pakiet językowy do .NET. To pomoże Ci szybciej znaleźć rozwiązania wszelkich problemów.

0

Kiedy uruchomiłem jeszcze raz Visual Studio i otwierałem projekt to wyskoczyło okienko z informacją, że projekt korzysta z bazy która nie jest zainstalowana. Instalacja tego: https://www.microsoft.com/en-us/download/details.aspx?id=29062 rozwiązała problem.

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