연결 문자열 만들기 및 SQL Server LocalDB 사용

작성자: Rick Anderson

메모

이 자습서의 업데이트된 버전은 최신 버전의 Visual Studio를 사용하여 여기에서 사용할 수 있습니다. 새 자습서에서는 ASP.NET Core MVC를 사용하여 이 자습서를 통해 많은 개선 사항을 제공합니다.

이 자습서에서는 컨트롤러 및 뷰를 사용하여 ASP.NET Core MVC에 대해 설명합니다. Razor Pages는 웹 UI 빌드를 더 쉽고 생산성 있게 만드는 페이지 기반 프로그래밍 모델인 ASP.NET Core의 새로운 대안입니다. MVC 버전 전에 Razor Pages 자습서를 사용하는 것이 좋습니다. Razor Pages 자습서:

  • 따라하기 쉽습니다.
  • 더 많은 기능을 다룹니다.
  • 새 앱 개발을 위한 기본 접근 방식입니다.

연결 문자열 만들기 및 SQL Server LocalDB 사용

만든 클래스는 MovieDBContext 데이터베이스에 연결하고 개체를 데이터베이스 레코드에 매핑 Movie 하는 작업을 처리합니다. 하지만 한 가지 질문은 연결할 데이터베이스를 지정하는 방법입니다. 실제로 사용할 데이터베이스를 지정할 필요가 없습니다. Entity Framework는 기본적으로 LocalDB를 사용합니다. 이 섹션에서는 애플리케이션의 Web.config 파일에 연결 문자열을 명시적으로 추가합니다.

SQL Server Express LocalDB (SQL 서버 익스프레스 로컬DB)

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 영화 목록을 만들 수 있도록 하는 데 사용할 수 있는 새 클래스를 빌드합니다.