Tworzenie parametrów połączenia i praca z bazą danych SQL Server LocalDB
Uwaga
Zaktualizowana wersja tego samouczka jest dostępna tutaj przy użyciu najnowszej wersji programu Visual Studio. W nowym samouczku użyto ASP.NET Core MVC, co zapewnia wiele ulepszeń w tym samouczku.
W tym samouczku przedstawiono ASP.NET Core MVC z kontrolerami i widokami. Razor Pages to nowa alternatywa w ASP.NET Core, oparty na stronach model programowania, który ułatwia tworzenie internetowego interfejsu użytkownika i bardziej wydajne. Zalecamy wypróbowanie samouczka Razor Pages przed wersją MVC. Samouczek usługi Razor Pages:
- Jest łatwiejsze do naśladowania.
- Obejmuje więcej funkcji.
- Jest preferowanym podejściem do tworzenia nowych aplikacji.
Tworzenie parametrów połączenia i praca z bazą danych SQL Server LocalDB
Utworzona MovieDBContext
klasa obsługuje zadanie nawiązywania połączenia z bazą danych i mapowanie Movie
obiektów na rekordy bazy danych. Jednym z pytań, z którymi można się jednak zadać, jest określenie, z którą bazą danych będzie się łączyć. W rzeczywistości nie trzeba określać, której bazy danych używać, program Entity Framework będzie domyślnie używać bazy danych LocalDB. W tej sekcji jawnie dodamy parametry połączenia w pliku Web.config aplikacji.
SQL Server Express LocalDB
LocalDB to uproszczona wersja aparatu bazy danych SQL Server Express uruchamiana na żądanie i uruchamiana w trybie użytkownika. Usługa LocalDB działa w specjalnym trybie wykonywania SQL Server Express, który umożliwia pracę z bazami danych jako plikami mdf. Zazwyczaj pliki bazy danych LocalDB są przechowywane w folderze App_Data projektu internetowego.
SQL Server Express nie jest zalecane do użycia w produkcyjnych aplikacjach internetowych. W szczególności baza danych LocalDB nie powinna być używana w środowisku produkcyjnym z aplikacją internetową, ponieważ nie jest przeznaczona do pracy z usługami IIS. Jednak bazę danych LocalDB można łatwo migrować do SQL Server lub Usługi SQL Azure.
W programie Visual Studio 2017 baza danych LocalDB jest instalowana domyślnie w programie Visual Studio.
Domyślnie program Entity Framework szuka parametrów połączenia o nazwie takiej samej jak klasa kontekstu obiektu (MovieDBContext
dla tego projektu). Aby uzyskać więcej informacji, zobacz SQL Server parametry połączenia dla aplikacji internetowych ASP.NET.
Otwórz plik główny aplikacjiWeb.config pokazany poniżej. (Nie plik Web.config w folderze Views ).
<connectionStrings>
Znajdź element:
Dodaj następujące parametry połączenia do <connectionStrings>
elementu w pliku Web.config .
<add name="MovieDBContext"
connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=aspnet-MvcMovie;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Movies.mdf"
providerName="System.Data.SqlClient"
/>
W poniższym przykładzie przedstawiono część pliku Web.config z dodanymi nowymi parametrami połączenia:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=aspnet-MvcMovie-fefdc1f0-bd81-4ce9-b712-93a062e01031;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-MvcMovie-fefdc1f0-bd81-4ce9-b712-93a062e01031.mdf" providerName="System.Data.SqlClient" />
<add name="MovieDBContext" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=aspnet-MvcMovie;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Movies.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>
Dwa parametry połączenia są bardzo podobne. Pierwsze parametry połączenia mają nazwę DefaultConnection
i są używane dla bazy danych członkostwa w celu kontrolowania, kto może uzyskiwać dostęp do aplikacji. Dodane parametry połączenia określają bazę danych LocalDB o nazwie Movie.mdf znajdującą się w folderze App_Data . Nie będziemy używać bazy danych członkostwa w tym samouczku, aby uzyskać więcej informacji na temat członkostwa, uwierzytelniania i zabezpieczeń, zobacz mój samouczek Tworzenie aplikacji ASP.NET MVC z uwierzytelnianiem i bazą danych SQL ORAZ wdrażanie w Azure App Service.
Nazwa parametrów połączenia musi być zgodna z nazwą klasy DbContext .
using System;
using System.Data.Entity;
namespace MvcMovie.Models
{
public class Movie
{
public int ID { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; }
}
public class MovieDBContext : DbContext
{
public DbSet<Movie> Movies { get; set; }
}
}
Nie musisz dodawać parametrów MovieDBContext
połączenia. Jeśli nie określisz parametrów połączenia, program Entity Framework utworzy bazę danych LocalDB w katalogu users z w pełni kwalifikowaną nazwą klasy DbContext (w tym przypadku MvcMovie.Models.MovieDBContext
). Możesz nazwać bazę danych tak długo, jak ma wartość . Sufiks MDF. Na przykład możemy nazwać bazę danych MyFilms.mdf.
Następnie utworzysz nową MoviesController
klasę, której można użyć do wyświetlania danych filmu i umożliwienia użytkownikom tworzenia nowych list filmów.