연결 문자열 만들기 및 SQL Server LocalDB 사용
작성자 : Rick Anderson
참고
이 자습서의 업데이트된 버전은 최신 버전의 Visual Studio를 사용하여 여기에서 사용할 수 있습니다. 새 자습서에서는 ASP.NET Core MVC를 사용하며, 이 자습서에서는 많은 개선 사항을 제공합니다.
이 자습서에서는 컨트롤러와 보기를 통해 ASP.NET Core MVC에 설명합니다. Razor Pages는 웹 UI를 더 쉽고 생산성을 높이는 페이지 기반 프로그래밍 모델인 ASP.NET Core 새로운 대안입니다. MVC 버전 이전의 Razor 페이지 자습서를 사용해 보는 것이 좋습니다. Razor 페이지 자습서:
- 자습서 내용을 좀 더 쉽게 진행할 수 있습니다.
- 더 많은 기능을 다룹니다.
- 새 앱 개발에 선호되는 방법입니다.
연결 문자열 만들기 및 SQL Server LocalDB 사용
만든 클래스는 MovieDBContext
데이터베이스에 연결하고 개체를 데이터베이스 레코드에 매핑 Movie
하는 작업을 처리합니다. 하지만 질문할 수 있는 한 가지 질문은 연결할 데이터베이스를 지정하는 방법입니다. 실제로 사용할 데이터베이스를 지정할 필요가 없습니다. Entity Framework는 기본적으로 LocalDB를 사용합니다. 이 섹션에서는 애플리케이션의 Web.config 파일에 연결 문자열을 명시적으로 추가합니다.
SQL Server Express LocalDB
LocalDB는 요청 시 시작하고 사용자 모드에서 실행되는 SQL Server Express 데이터베이스 엔진의 경량 버전입니다. LocalDB는 데이터베이스를 .mdf 파일로 작업할 수 있는 SQL Server Express 특수 실행 모드에서 실행됩니다. 일반적으로 LocalDB 데이터베이스 파일은 웹 프로젝트의 App_Data 폴더에 보관됩니다.
프로덕션 웹 애플리케이션에서는 SQL Server Express 사용하지 않는 것이 좋습니다. 특히 LocalDB는 IIS와 함께 작동하도록 설계되지 않았기 때문에 웹 애플리케이션의 프로덕션에 사용하면 안 됩니다. 그러나 LocalDB 데이터베이스를 SQL Server 또는 SQL Azure 쉽게 마이그레이션할 수 있습니다.
Visual Studio 2017에서 LocalDB는 기본적으로 Visual Studio와 함께 설치됩니다.
기본적으로 Entity Framework는 개체 컨텍스트 클래스(MovieDBContext
이 프로젝트의 경우)와 동일한 라는 연결 문자열을 찾습니다. 자세한 내용은 ASP.NET 웹 애플리케이션에 대한 연결 문자열 SQL Server 참조하세요.
아래와 같이 애플리케이션 루트 Web.config 파일을 엽니다. (Views 폴더의 Web.config 파일이 아닙니다.)
요소를 찾습니다.<connectionStrings>
Web.config 파일의 요소에 <connectionStrings>
다음 연결 문자열을 추가합니다.
<add name="MovieDBContext"
connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=aspnet-MvcMovie;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Movies.mdf"
providerName="System.Data.SqlClient"
/>
다음 예제에서는 새 연결 문자열이 추가된 Web.config 파일의 일부를 보여줍니다.
<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>
두 연결 문자열은 매우 유사합니다. 첫 번째 연결 문자열의 이름은 멤버 DefaultConnection
자격 데이터베이스에서 애플리케이션에 액세스할 수 있는 사용자를 제어하는 데 사용됩니다. 추가한 연결 문자열은 App_Data 폴더에 있는 Movie.mdf라는 LocalDB 데이터베이스를 지정합니다. 이 자습서에서는 멤버 자격 데이터베이스를 사용하지 않습니다. 멤버 자격, 인증 및 보안에 대한 자세한 내용은 내 자습서 인증 및 SQL DB를 사용하여 ASP.NET MVC 앱 만들기 및 Azure App Service 배포를 참조하세요.
연결 문자열의 이름은 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; }
}
}
실제로 연결 문자열을 추가할 MovieDBContext
필요가 없습니다. 연결 문자열을 지정하지 않으면 Entity Framework는 DbContext 클래스의 정규화된 이름을 사용하여 사용자 디렉터리에 LocalDB 데이터베이스를 만듭니다(이 경우 MvcMovie.Models.MovieDBContext
). 데이터베이스에 가 있는 한 원하는 대로 데이터베이스 이름을 지정할 수 있습니다 . MDF 접미사입니다. 예를 들어 데이터베이스 이름을 MyFilms.mdf로 지정할 수 있습니다.
다음으로, 영화 데이터를 표시하고 사용자가 새 MoviesController
영화 목록을 만들 수 있도록 하는 데 사용할 수 있는 새 클래스를 빌드합니다.