Visual Studio 또는 Visual Web Developer를 사용하여 SQL Server Compact ASP.NET 웹 애플리케이션 배포: SQL Server Compact 데이터베이스 배포 - 12개 중 2개

작성자 : Tom Dykstra

시작 프로젝트 다운로드

이 자습서 시리즈에서는 Visual Studio 2012 RC 또는 Visual Studio Express 2012 RC for Web을 사용하여 SQL Server Compact 데이터베이스를 포함하는 ASP.NET 웹 애플리케이션 프로젝트를 배포(게시)하는 방법을 보여 줍니다. 웹 게시 업데이트를 설치하는 경우 Visual Studio 2010을 사용할 수도 있습니다. 시리즈에 대한 소개는 시리즈의 첫 번째 자습서를 참조하세요.

Visual Studio 2012의 RC 릴리스 이후에 도입된 배포 기능을 보여 주는 자습서는 SQL Server Compact 이외의 SQL Server 버전을 배포하는 방법을 보여 줍니다. Azure App Service Web Apps 배포하는 방법을 보여 주는 자습서는 Visual Studio를 사용하여 웹 배포 ASP.NET 참조하세요.

개요

이 자습서에서는 배포를 위해 두 개의 SQL Server Compact 데이터베이스와 데이터베이스 엔진을 설정하는 방법을 보여 줍니다.

데이터베이스 액세스의 경우 Contoso University 애플리케이션은 .NET Framework 포함되지 않으므로 애플리케이션과 함께 배포해야 하는 다음 소프트웨어가 필요합니다.

데이터베이스 구조와 애플리케이션의 두 데이터베이스에 있는 데이터의 일부(전부는 아님)도 배포해야 합니다. 일반적으로 애플리케이션을 개발할 때 라이브 사이트에 배포하지 않으려는 데이터베이스에 테스트 데이터를 입력합니다. 그러나 배포하려는 일부 프로덕션 데이터를 입력할 수도 있습니다. 이 자습서에서는 배포할 때 필요한 소프트웨어와 올바른 데이터가 포함되도록 Contoso University 프로젝트를 구성합니다.

미리 알림: 자습서를 진행하는 동안 오류 메시지가 표시되거나 작동하지 않는 경우 문제 해결 페이지를 검사 합니다.

SQL Server Compact 및 SQL Server Express

샘플 애플리케이션은 SQL Server Compact 4.0을 사용합니다. 이 데이터베이스 엔진은 웹 사이트에 대한 비교적 새로운 옵션입니다. 이전 버전의 SQL Server Compact 웹 호스팅 환경에서는 작동하지 않습니다. SQL Server Compact SQL Server Express 사용하여 개발하고 전체 SQL Server 배포하는 일반적인 시나리오에 비해 몇 가지 이점을 제공합니다. 선택한 호스팅 공급자에 따라 일부 공급자가 전체 SQL Server 데이터베이스를 지원하기 위해 추가 요금을 부과하기 때문에 SQL Server Compact 배포하는 것이 더 저렴할 수 있습니다. 데이터베이스 엔진 자체를 웹 애플리케이션의 일부로 배포할 수 있으므로 SQL Server Compact 대한 추가 요금은 없습니다.

그러나 해당 제한 사항도 알고 있어야 합니다. SQL Server Compact 저장 프로시저, 트리거, 뷰 또는 복제를 지원하지 않습니다. (SQL Server Compact 지원되지 않는 SQL Server 기능의 전체 목록은 SQL Server Compact 및 SQL Server 간의 차이점을 참조하세요. 또한 SQL Server Express 및 SQL Server 데이터베이스에서 스키마 및 데이터를 조작하는 데 사용할 수 있는 일부 도구는 SQL Server Compact 작동하지 않습니다. 예를 들어 SQL Server Compact 데이터베이스와 함께 Visual Studio에서 SQL Server Management Studio 또는 SQL Server Data Tools 사용할 수 없습니다. SQL Server Compact 데이터베이스를 사용하기 위한 다른 옵션이 있습니다.

  • SQL Server Compact 제한된 데이터베이스 조작 기능을 제공하는 Visual Studio에서 서버 Explorer 사용할 수 있습니다.
  • Server Explorer 것보다 많은 기능이 있는 WebMatrix의 데이터베이스 조작 기능을 사용할 수 있습니다.
  • SQL Server Compact 도구 상자, SQL Compact 데이터 및 스키마 스크립트 유틸리티와 같이 비교적 완전한 기능을 갖춘 타사 또는 오픈 소스 도구를 사용할 수 있습니다.
  • 고유한 DDL(데이터 정의 언어) 스크립트를 작성하고 실행하여 데이터베이스 스키마를 조작할 수 있습니다.

SQL Server Compact 시작한 다음, 요구 사항이 진화함에 따라 나중에 업그레이드할 수 있습니다. 이 시리즈의 이후 자습서에서는 SQL Server Compact SQL Server Express 및 SQL Server 마이그레이션하는 방법을 보여 줍니다. 그러나 새 애플리케이션을 만들고 가까운 장래에 SQL Server 필요할 것으로 예상되는 경우 SQL Server 또는 SQL Server Express 시작하는 것이 가장 좋습니다.

배포용 SQL Server Compact 데이터베이스 엔진 구성

Contoso University 애플리케이션에서 데이터 액세스에 필요한 소프트웨어는 다음 NuGet 패키지를 설치하여 추가되었습니다.

링크는 이러한 패키지의 현재 버전을 가리킵니다. 이 패키지는 이 자습서를 위해 다운로드한 시작 프로젝트에 설치된 것보다 최신 버전일 수 있습니다. 호스팅 공급자에 배포하려면 Entity Framework 5.0 이상을 사용해야 합니다. 이전 버전의 Code First 마이그레이션 완전 신뢰가 필요하며, 많은 호스팅 공급자에서 애플리케이션이 중간 신뢰로 실행됩니다. 중간 신뢰에 대한 자세한 내용은 IIS에 테스트 환경으로 배포 자습서를 참조하세요.

NuGet 패키지 설치는 일반적으로 애플리케이션과 함께 이 소프트웨어를 배포하기 위해 필요한 모든 것을 처리합니다. 경우에 따라 Web.config 파일을 변경하고 솔루션을 빌드할 때마다 실행되는 PowerShell 스크립트를 추가하는 등의 작업이 포함됩니다. NuGet을 사용하지 않고 이러한 기능(예: SQL Server Compact 및 Entity Framework)에 대한 지원을 추가하려면 동일한 작업을 수동으로 수행할 수 있도록 NuGet 패키지 설치가 수행하는 작업을 알고 있어야 합니다.

NuGet이 성공적인 배포를 보장하기 위해 수행해야 하는 모든 작업을 처리하지 않는 한 가지 예외가 있습니다. SqlServerCompact NuGet 패키지는 네이티브 어셈블리를 프로젝트 bin 폴더 아래의 x86amd64 하위 폴더에 복사하는 빌드 후 스크립트를 프로젝트에 추가하지만 스크립트는 프로젝트에 해당 폴더를 포함하지 않습니다. 따라서 웹 배포는 프로젝트에 수동으로 포함하지 않는 한 대상 웹 사이트에 복사하지 않습니다. (이 동작은 기본 배포 구성에서 발생합니다. 이 자습서에서 사용하지 않는 또 다른 옵션은 이 동작을 제어하는 설정을 변경하는 것입니다. 변경할 수 있는 설정은 프로젝트 속성 창의 패키지/게시 웹 탭에 배포할 항목에서 애플리케이션을 실행하는 데 필요한 파일만입니다. 이 설정을 변경하면 프로덕션 환경에 필요한 것보다 더 많은 파일이 배포될 수 있으므로 일반적으로 권장되지 않습니다. 대안에 대한 자세한 내용은 프로젝트 속성 구성 자습서를 참조하세요.)

프로젝트를 빌드한 다음, 아직 수행하지 않은 경우 솔루션 탐색기 모든 파일 표시를 클릭합니다. 새로 고침을 클릭해야 할 수도 있습니다.

Solution_Explorer_Show_All_Files

bin 폴더를 확장하여 amd64x86 폴더를 표시한 다음 해당 폴더를 선택하고 마우스 오른쪽 단추를 클릭한 다음 프로젝트에 포함을 선택합니다.

amd64_and_x86_in_Solution_Explorer.png

폴더 아이콘이 변경되어 폴더가 프로젝트에 포함되었음을 표시합니다.

Solution_Explorer_amd64_included.png

애플리케이션 데이터베이스 배포에 대한 Code First 마이그레이션 구성

애플리케이션 데이터베이스를 배포하는 경우 일반적으로 개발 데이터베이스의 모든 데이터가 포함된 개발 데이터베이스를 프로덕션에 배포하는 것은 아닙니다. 그 안에 있는 데이터의 대부분은 테스트 목적으로만 있을 수 있기 때문입니다. 예를 들어 테스트 데이터베이스의 학생 이름은 허구입니다. 반면에 데이터가 전혀 없는 데이터베이스 구조만 배포할 수 없는 경우가 많습니다. 테스트 데이터베이스의 일부 데이터는 실제 데이터일 수 있으며 사용자가 애플리케이션을 사용하기 시작할 때 있어야 합니다. 예를 들어 데이터베이스에 유효한 성적 값 또는 실제 부서 이름이 포함된 테이블이 있을 수 있습니다.

이 일반적인 시나리오를 시뮬레이트하려면 프로덕션 환경에 있을 데이터만 데이터베이스에 삽입하는 Code First 마이그레이션 Seed 메서드를 구성합니다. 이 Seed 메서드는 Code First가 프로덕션에서 데이터베이스를 만든 후 프로덕션에서 실행되므로 테스트 데이터를 삽입하지 않습니다.

마이그레이션이 릴리스되기 전의 이전 버전의 Code First에서는 개발 중에 모델 변경이 있을 때마다 데이터베이스를 완전히 삭제하고 처음부터 다시 만들어야 했기 때문에 시드 메서드도 테스트 데이터를 삽입하는 것이 일반적이었습니다. Code First 마이그레이션 경우 데이터베이스 변경 후 테스트 데이터가 유지되므로 Seed 메서드에 테스트 데이터를 포함할 필요가 없습니다. 다운로드한 프로젝트는 이니셜라이저 클래스의 Seed 메서드에 모든 데이터를 포함하는 마이그레이션 전 메서드를 사용합니다. 이 자습서에서는 이니셜라이저 클래스를 사용하지 않도록 설정하고 마이그레이션을 사용하도록 설정합니다. 그런 다음 프로덕션에 삽입하려는 데이터만 삽입하도록 Migrations 구성 클래스에서 Seed 메서드를 업데이트합니다.

다음 다이어그램에서는 애플리케이션 데이터베이스의 스키마를 보여 줍니다.

School_database_diagram

이 자습서에서는 사이트가 처음 배포될 때 및 Enrollment 테이블이 비어 있어야 한다고 가정 Student 합니다. 다른 테이블에는 애플리케이션이 라이브 상태가 될 때 미리 로드해야 하는 데이터가 포함되어 있습니다.

Code First 마이그레이션 사용하므로 DropCreateDatabaseIfModelChanges Code First 이니셜라이저를 더 이상 사용할 필요가 없습니다. 이 이니셜라이저의 코드는 ContosoUniversity.DAL 프로젝트의 SchoolInitializer.cs 파일에 있습니다. Web.config 파일의 appSettings 요소에 설정하면 애플리케이션이 처음으로 데이터베이스에 액세스하려고 할 때마다 이 이니셜라이저가 실행됩니다.

<appSettings>
  <add key="Environment" value="Dev" />
  <add key="DatabaseInitializerForType ContosoUniversity.DAL.SchoolContext, ContosoUniversity.DAL" value="ContosoUniversity.DAL.SchoolInitializer, ContosoUniversity.DAL" />
</appSettings>

애플리케이션 Web.config 파일을 열고 appSettings 요소에서 Code First 이니셜라이저 클래스를 지정하는 요소를 제거합니다. appSettings 요소는 이제 다음과 같습니다.

<appSettings>
  <add key="Environment" value="Dev" />
</appSettings>

참고

이니셜라이저 클래스를 지정하는 또 다른 방법은 Global.asax 파일의 Application_Start 메서드에서 를 호출 Database.SetInitializer 하는 것입니다. 해당 메서드를 사용하여 이니셜라이저를 지정하는 프로젝트에서 마이그레이션을 사용하도록 설정하는 경우 해당 코드 줄을 제거합니다.

다음으로, Code First 마이그레이션 사용하도록 설정합니다.

첫 번째 단계는 ContosoUniversity 프로젝트가 시작 프로젝트로 설정되어 있는지 확인하는 것입니다. 솔루션 탐색기 ContosoUniversity 프로젝트를 마우스 오른쪽 단추로 클릭하고 시작 프로젝트로 설정을 선택합니다. Code First 마이그레이션 시작 프로젝트에서 데이터베이스 연결 문자열을 찾습니다.

도구 메뉴에서 NuGet 패키지 관리자, 패키지 관리자 콘솔을 차례로 클릭합니다.

Selecting_Package_Manager_Console

패키지 관리자 콘솔 창 위쪽에서 기본 프로젝트로 ContosoUniversity.DAL을 선택한 다음 프롬프트에서 PM> "enable-migrations"를 입력합니다.

enable-migrations_command

이 명령은 ContosoUniversity.DAL 프로젝트의 새 Migrations 폴더에 Configuration.cs 파일을 만듭니다.

Migrations_folder_in_Solution_Explorer

Code First 컨텍스트 클래스가 포함된 프로젝트에서 "enable-migrations" 명령을 실행해야 하므로 DAL 프로젝트를 선택했습니다. 해당 클래스가 클래스 라이브러리 프로젝트에 있는 경우 Code First 마이그레이션 솔루션에 대한 시작 프로젝트에서 데이터베이스 연결 문자열을 찾습니다. ContosoUniversity 솔루션에서 웹 프로젝트가 시작 프로젝트로 설정되었습니다. (Visual Studio에서 연결 문자열이 있는 프로젝트를 시작 프로젝트로 지정하지 않으려면 PowerShell 명령에서 시작 프로젝트를 지정할 수 있습니다. enable-migrations 명령에 대한 명령 구문을 보려면 "get-help enable-migrations" 명령을 입력하면 됩니다.

Configuration.cs 파일을 열고 메서드의 주석을 Seed 다음 코드로 바꿉니다.

var instructors = new List<Instructor>
{   
    new Instructor { FirstMidName = "Kim",     LastName = "Abercrombie", HireDate = DateTime.Parse("1995-03-11"), OfficeAssignment = new OfficeAssignment { Location = "Smith 17" } },
    new Instructor { FirstMidName = "Fadi",    LastName = "Fakhouri",    HireDate = DateTime.Parse("2002-07-06"), OfficeAssignment = new OfficeAssignment { Location = "Gowan 27" } },
    new Instructor { FirstMidName = "Roger",   LastName = "Harui",       HireDate = DateTime.Parse("1998-07-01"), OfficeAssignment = new OfficeAssignment { Location = "Thompson 304" } },
    new Instructor { FirstMidName = "Candace", LastName = "Kapoor",      HireDate = DateTime.Parse("2001-01-15") },
    new Instructor { FirstMidName = "Roger",   LastName = "Zheng",       HireDate = DateTime.Parse("2004-02-12") }
};
instructors.ForEach(s => context.Instructors.AddOrUpdate(i => i.LastName, s));
context.SaveChanges();

var departments = new List<Department>
{
    new Department { Name = "English",     Budget = 350000, StartDate = DateTime.Parse("2007-09-01"), PersonID = 1 },
    new Department { Name = "Mathematics", Budget = 100000, StartDate = DateTime.Parse("2007-09-01"), PersonID = 2 },
    new Department { Name = "Engineering", Budget = 350000, StartDate = DateTime.Parse("2007-09-01"), PersonID = 3 },
    new Department { Name = "Economics",   Budget = 100000, StartDate = DateTime.Parse("2007-09-01"), PersonID = 4 }
};
departments.ForEach(s => context.Departments.AddOrUpdate(d => d.Name, s));
context.SaveChanges();

var courses = new List<Course>
{
    new Course { CourseID = 1050, Title = "Chemistry",      Credits = 3, DepartmentID = 3, Instructors = new List<Instructor>() },
    new Course { CourseID = 4022, Title = "Microeconomics", Credits = 3, DepartmentID = 4, Instructors = new List<Instructor>() },
    new Course { CourseID = 4041, Title = "Macroeconomics", Credits = 3, DepartmentID = 4, Instructors = new List<Instructor>() },
    new Course { CourseID = 1045, Title = "Calculus",       Credits = 4, DepartmentID = 2, Instructors = new List<Instructor>() },
    new Course { CourseID = 3141, Title = "Trigonometry",   Credits = 4, DepartmentID = 2, Instructors = new List<Instructor>() },
    new Course { CourseID = 2021, Title = "Composition",    Credits = 3, DepartmentID = 1, Instructors = new List<Instructor>() },
    new Course { CourseID = 2042, Title = "Literature",     Credits = 4, DepartmentID = 1, Instructors = new List<Instructor>() }
};
courses.ForEach(s => context.Courses.AddOrUpdate(s));
context.SaveChanges();

courses[0].Instructors.Add(instructors[0]);
courses[0].Instructors.Add(instructors[1]);
courses[1].Instructors.Add(instructors[2]);
courses[2].Instructors.Add(instructors[2]);
courses[3].Instructors.Add(instructors[3]);
courses[4].Instructors.Add(instructors[3]);
courses[5].Instructors.Add(instructors[3]);
courses[6].Instructors.Add(instructors[3]);
context.SaveChanges();

네임스페이스에 List 대한 문이 아직 없으므로 아래에 빨간색 물결선이 있는 using 참조입니다. 인스턴스 중 하나를 마우스 오른쪽 단추로 List 클릭하고 해결을 클릭한 다음 System.Collections.Generic 사용을 클릭합니다.

using 문을 사용하여 해결

이 메뉴 선택은 파일 맨 위에 있는 문에 using 다음 코드를 추가합니다.

using System.Collections.Generic;

참고

메서드에 Seed 코드를 추가하는 것은 고정 데이터를 데이터베이스에 삽입할 수 있는 여러 가지 방법 중 하나입니다. 또는 각 마이그레이션 클래스의 및 Down 메서드에 Up 코드를 추가하는 것입니다. 및 Down 메서드에는 Up 데이터베이스 변경 내용을 구현하는 코드가 포함되어 있습니다. 이러한 예제는 데이터베이스 업데이트 배포 자습서에서 확인할 수 있습니다.

메서드를 사용하여 SQL 문을 실행하는 코드를 작성할 Sql 수도 있습니다. 예를 들어 부서 테이블에 예산 열을 추가하고 마이그레이션의 일부로 모든 부서 예산을 $1,000.00로 초기화하려는 경우 해당 마이그레이션에 대한 메서드에 다음 코드 Up 줄을 추가할 수 있습니다.

Sql("UPDATE Department SET Budget = 1000");

이 자습서에 표시된 이 예제에서는 Code First 마이그레이션 Configuration 클래스의 메서드에서 Seed 메서드를 사용합니다AddOrUpdate. Code First 마이그레이션 모든 마이그레이션 후에 메서드를 Seed 호출하고, 이 메서드는 이미 삽입된 행을 업데이트하거나 아직 없는 경우 삽입합니다. 메서드가 AddOrUpdate 시나리오에 가장 적합한 선택이 아닐 수 있습니다. 자세한 내용은 Julie Lerman의 블로그에서 EF 4.3 AddOrUpdate 메서드를 사용하여 주의 하세요.

Ctrl-Shift-B를 눌러 프로젝트를 빌드합니다.

다음 단계는 초기 마이그레이션을 DbMigration 위한 클래스를 만드는 것입니다. 이 마이그레이션을 통해 새 데이터베이스를 만들 수 있으므로 이미 존재하는 데이터베이스를 삭제해야 합니다. SQL Server Compact 데이터베이스는 App_Data 폴더의 .sdf 파일에 포함되어 있습니다. 솔루션 탐색기 ContosoUniversity 프로젝트의 App_Data 확장하여 .sdf 파일로 표시되는 두 SQL Server Compact 데이터베이스를 확인합니다.

School.sdf 파일을 마우스 오른쪽 단추로 클릭하고 삭제를 클릭합니다.

sdf_files_in_Solution_Explorer

패키지 관리자 콘솔 창에서 "추가 마이그레이션 초기" 명령을 입력하여 초기 마이그레이션을 만들고 이름을 "Initial"로 지정합니다.

add-migration_command

Code First 마이그레이션 Migrations 폴더에 다른 클래스 파일을 만들고 이 클래스에는 데이터베이스 스키마를 만드는 코드가 포함되어 있습니다.

패키지 관리자 콘솔에서 "update-database" 명령을 입력하여 데이터베이스를 만들고 Seed 메서드를 실행합니다.

update-database_command

(테이블이 이미 있고 만들 수 없음을 나타내는 오류가 발생하면 데이터베이스를 삭제한 후 를 실행하기 전에 애플리케이션을 실행했기 update-database때문일 수 있습니다. 이 경우 School.sdf 파일을 다시 삭제하고 명령을 다시 시도합니다 update-database .)

애플리케이션을 실행합니다. 이제 학생 페이지가 비어 있지만 강사 페이지에는 강사가 포함되어 있습니다. 이는 애플리케이션을 배포한 후 프로덕션 환경에서 얻을 수 있는 기능입니다.

Empty_Students_page

Instructors_page_after_initial_migration

이제 프로젝트가 School 데이터베이스를 배포할 준비가 되었습니다.

배포를 위한 멤버 자격 데이터베이스 만들기

Contoso University 애플리케이션은 ASP.NET 멤버 자격 시스템을 사용하고 인증을 형성하여 사용자를 인증하고 권한을 부여합니다. 해당 페이지 중 하나는 관리자만 액세스할 수 있습니다. 이 페이지를 보려면 애플리케이션을 실행하고 과정 아래의 플라이아웃 메뉴에서 크레딧 업데이트를 선택합니다. 관리자만 크레딧 업데이트 페이지를 사용할 수 있는 권한이 있으므로 애플리케이션에 로그인 페이지가 표시됩니다.

Log_in_page

암호 "Pas$w0rd"를 사용하여 "admin"으로 로그인합니다("w0rd"의 문자 "o" 대신 숫자 0을 확인합니다). 로그인하면 크레딧 업데이트 페이지가 표시됩니다.

Update_Credits_page

사이트를 처음으로 배포하는 경우 테스트를 위해 만든 사용자 계정의 대부분 또는 전부를 제외하는 것이 일반적입니다. 이 경우 관리자 계정과 사용자 계정을 배포하지 않습니다. 테스트 계정을 수동으로 삭제하는 대신 프로덕션에 필요한 관리자 사용자 계정이 하나만 있는 새 멤버 자격 데이터베이스를 만듭니다.

참고

멤버 자격 데이터베이스는 계정 암호의 해시를 저장합니다. 한 컴퓨터에서 다른 컴퓨터로 계정을 배포하려면 해시 루틴이 원본 컴퓨터와 다른 해시를 대상 서버에서 생성하지 않도록 해야 합니다. 기본 알고리즘을 변경하지 않는 한 ASP.NET Universal Providers 사용할 때 동일한 해시를 생성합니다. 기본 알고리즘은 HMACSHA256이며 Web.config 파일에서 machineKey 요소의 유효성 검사 특성에 지정됩니다.

멤버 자격 데이터베이스는 Code First 마이그레이션 유지 관리되지 않으며 테스트 계정으로 데이터베이스를 시드하는 자동 이니셜라이저가 없습니다(School 데이터베이스의 경우와 같이). 따라서 테스트 데이터를 계속 사용하려면 새 데이터베이스를 만들기 전에 테스트 데이터베이스의 복사본을 만듭니다.

솔루션 탐색기App_Data 폴더의 aspnet.sdf 파일 이름을 aspnet-Dev.sdf로 바꿉니다. (복사본을 만들지 말고 이름을 바꾸면 잠시 후에 새 데이터베이스를 만듭니다.)

솔루션 탐색기 웹 프로젝트(ContosoUniversity.DAL이 아닌 ContosoUniversity)가 선택되어 있는지 확인합니다. 그런 다음 프로젝트 메뉴에서 ASP.NET 구성 을 선택하여 WAT( 웹 사이트 관리 도구)를 실행합니다.

보안 탭을 선택합니다.

WAT_Security_tab

역할 만들기 또는 관리를 클릭하고 관리자 역할을 추가합니다.

WAT_Create_New_Role

보안 탭으로 다시 이동하여 사용자 만들기를 클릭하고 사용자 "관리자"를 관리자로 추가합니다. 사용자 만들기 페이지에서 사용자 만들기 단추를 클릭하기 전에 관리자 검사 확인란을 선택해야 합니다. 이 자습서에서 사용되는 암호는 "Pas$w0rd"이며 전자 메일 주소를 입력할 수 있습니다.

WAT_Create_User

브라우저를 닫습니다. 솔루션 탐색기 새로 고침 단추를 클릭하여 새 aspnet.sdf 파일을 확인합니다.

New_aspnet.sdf_in_Solution_Explorer

aspnet.sdf를 마우스 오른쪽 단추로 클릭하고 프로젝트에 포함을 선택합니다.

프로덕션 데이터베이스와 개발 구분

이 섹션에서는 개발 버전이 School-Dev.sdf 및 aspnet-Dev.sdf이고 프로덕션 버전이 School-Prod.sdf 및 aspnet-Prod.sdf가 되도록 데이터베이스의 이름을 바꿉니다. 이 작업은 필요하지 않지만 이렇게 하면 데이터베이스의 테스트 및 프로덕션 버전이 혼동되는 것을 막을 수 있습니다.

솔루션 탐색기새로 고침을 클릭하고 App_Data 폴더를 확장하여 이전에 만든 School 데이터베이스를 확인합니다. 마우스 오른쪽 단추로 클릭하고 프로젝트에 포함을 선택합니다.

Including_School.sdf_in_project

aspnet.sdf의 이름을 aspnet-Prod.sdf로 바꿉니다.

School.sdf의 이름을 School-Dev.sdf로 바꿉니다.

Visual Studio에서 애플리케이션을 실행하는 경우 -Prod 버전의 데이터베이스 파일을 사용하지 않으려는 경우 -Dev 버전을 사용하려고 합니다. 따라서 데이터베이스의 -Dev 버전을 가리키도록 Web.config 파일의 연결 문자열을 변경해야 합니다. (School-Prod.sdf 파일을 만들지 않았지만 Code First가 앱을 처음 실행할 때 프로덕션에서 해당 데이터베이스를 만들기 때문에 괜찮습니다.)

애플리케이션 Web.config 파일을 열고 연결 문자열을 찾습니다.

<configuration>
  <!-- Settings -->
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=|DataDirectory|aspnet.sdf" providerName="System.Data.SqlServerCe.4.0" />
    <add name="SchoolContext" connectionString="Data Source=|DataDirectory|School.sdf" providerName="System.Data.SqlServerCe.4.0" />
  </connectionStrings>
  <!-- Settings -->
</configuration>

"aspnet.sdf"를 "aspnet-Dev.sdf"로 변경하고 "School.sdf"를 "School-Dev.sdf"로 변경합니다.

<configuration>
  <!-- Settings -->
  <connectionStrings>
    <add name="DefaultConnection" connectionString="Data Source=|DataDirectory|aspnet-Dev.sdf" providerName="System.Data.SqlServerCe.4.0" />
    <add name="SchoolContext" connectionString="Data Source=|DataDirectory|School-Dev.sdf" providerName="System.Data.SqlServerCe.4.0" />
  </connectionStrings>
  <!-- Settings -->
</configuration>

이제 SQL Server Compact 데이터베이스 엔진과 두 데이터베이스를 모두 배포할 준비가 되었습니다. 다음 자습서에서는 개발, 테스트 및 프로덕션 환경에서 달라야 하는 설정에 대한 자동 Web.config 파일 변환을 설정합니다. (변경해야 하는 설정 중에는 연결 문자열이 있지만 나중에 게시 프로필을 만들 때 해당 변경 내용을 설정합니다.)

추가 정보

NuGet에 대한 자세한 내용은 NuGet 및 NuGet 설명서를 사용하여 프로젝트 라이브러리 관리를 참조하세요. NuGet을 사용하지 않으려면 NuGet 패키지를 분석하여 설치 시 수행하는 작업을 확인하는 방법을 알아봅니다. 예를 들어 Web.config 변환을 구성하고, 빌드 시 실행되도록 PowerShell 스크립트를 구성할 수 있습니다. NuGet의 작동 방식에 대한 자세한 내용은 특히 패키지 만들기 및 게시 및구성 파일 및 소스 코드 변환을 참조하세요.