다음을 통해 공유


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