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

작성자: 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 버전을 배포하는 방법을 보여 줍니다. Windows Azure 웹 사이트에 배포하는 방법을 보여 주는 자습서는 Visual Studio를 사용하여 ASP.NET 웹 배포를 참조하세요.

개요

이 자습서에서는 전체 SQL Server 데이터베이스에 데이터베이스 업데이트를 배포하는 방법을 보여줍니다. Code First 마이그레이션 데이터베이스 업데이트의 모든 작업을 수행하므로 이 프로세스는 데이터베이스 업데이트 배포 자습서의 SQL Server Compact 수행한 작업과 거의 동일합니다.

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

테이블에 새 열 추가

자습서의 이 섹션에서는 데이터베이스 변경 및 해당 코드를 변경한 다음, 테스트 및 프로덕션 환경에 배포할 준비를 위해 Visual Studio에서 테스트합니다. 변경 내용에는 엔터티에 OfficeHoursInstructor 열을 추가하고 강사 웹 페이지에 새 정보를 표시하는 작업이 포함 됩니다 .

ContosoUniversity.DAL 프로젝트에서 Instructor.cs 열고 및 Courses 속성 사이에 HireDate 다음 속성을 추가합니다.

[MaxLength(50)]
public string OfficeHours { get; set; }

새 열을 테스트 데이터로 시드할 수 있도록 이니셜라이저 클래스를 업데이트합니다. Migrations\Configuration.cs 열고 새 열을 포함하는 다음 코드 블록으로 시작하는 var instructors = new List<Instructor> 코드 블록을 바꿉니다.

var instructors = new List<Instructor>
{
    new Instructor { FirstMidName = "Kim",     LastName = "Abercrombie", HireDate = DateTime.Parse("1995-03-11"), BirthDate = DateTime.Parse("1918-08-12"), OfficeHours = "8-9AM, 4-5PM", OfficeAssignment = new OfficeAssignment { Location = "Smith 17" } },
    new Instructor { FirstMidName = "Fadi",    LastName = "Fakhouri",    HireDate = DateTime.Parse("2002-07-06"), BirthDate = DateTime.Parse("1960-03-15"), OfficeAssignment = new OfficeAssignment { Location = "Gowan 27" } },
    new Instructor { FirstMidName = "Roger",   LastName = "Harui",       HireDate = DateTime.Parse("1998-07-01"), BirthDate = DateTime.Parse("1970-01-11"), OfficeHours = "6AM-6PM", OfficeAssignment = new OfficeAssignment { Location = "Thompson 304" } },
    new Instructor { FirstMidName = "Candace", LastName = "Kapoor",      HireDate = DateTime.Parse("2001-01-15"), BirthDate = DateTime.Parse("1975-04-11") },
    new Instructor { FirstMidName = "Roger",   LastName = "Zheng",       HireDate = DateTime.Parse("2004-02-12"), BirthDate = DateTime.Parse("1957-10-12"), OfficeHours = "By appointment only" }
};

ContosoUniversity 프로젝트에서 Instructors.aspx 열고 첫 번째 GridView 컨트롤의 닫는 </Columns> 태그 바로 앞에 근무 시간에 대한 새 템플릿 필드를 추가합니다.

<asp:TemplateField HeaderText="Office Hours">
    <ItemTemplate>
        <asp:Label ID="InstructorOfficeHoursLabel" runat="server" Text='<%# Eval("OfficeHours") %>'></asp:Label>
    </ItemTemplate>
    <EditItemTemplate>
        <asp:TextBox ID="InstructorOfficeHoursTextBox" runat="server" Text='<%# Bind("OfficeHours") %>'
            Width="14em"></asp:TextBox>
    </EditItemTemplate>
</asp:TemplateField>

솔루션을 빌드합니다.

패키지 관리자 콘솔 창을 열고 ContosoUniversity.DAL을 기본 프로젝트로 선택합니다.

다음 명령을 입력합니다.

add-migration AddOfficeHoursColumn

update-database

애플리케이션을 실행하고 강사 페이지를 선택합니다. Entity Framework가 데이터베이스를 다시 만들고 테스트 데이터로 시드하기 때문에 페이지를 로드하는 데 평소보다 조금 더 오래 걸립니다.

Instructors_page_with_office_hours

테스트 환경에 데이터베이스 업데이트 배포

Code First 마이그레이션 사용하는 경우 데이터베이스 변경을 SQL Server 배포하는 방법은 SQL Server Compact 경우와 동일합니다. 그러나 테스트 게시 프로필은 여전히 SQL Server Compact SQL Server 마이그레이션하도록 설정되어 있으므로 변경해야 합니다.

첫 번째 단계는 이전 자습서에서 만든 연결 문자열 변환을 제거하는 것입니다. SQL Server 마이그레이션을 위해 패키지/게시 SQL 탭을 구성하기 전과 마찬가지로 게시 프로필에서 연결 문자열 변환을 지정하기 때문에 더 이상 필요하지 않습니다.

Web.Test.config 파일을 열고 요소를 제거합니다connectionStrings. Web.Test.config 파일의 유일한 나머지 변환은 요소의 Environment 값에 appSettings 대한 것입니다.

이제 게시 프로필을 업데이트하고 테스트 환경에 게시할 수 있습니다.

웹 게시 마법사를 열고 프로필 탭으로 전환합니다.

테스트 게시 프로필을 선택합니다.

설정 탭을 선택합니다.

새 데이터베이스 게시 개선 사항 사용을 클릭합니다.

SchoolContext의 연결 문자열 상자에 이전 자습서의 Web.Test.config 변환 파일에서 사용한 것과 동일한 값을 입력합니다.

Data Source=.\SQLExpress;Initial Catalog=School-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True

Code First 마이그레이션 실행을 선택합니다(애플리케이션 시작 시 실행). (Visual Studio 버전에서 검사 상자에 Code First 마이그레이션 적용 레이블이 지정될 수 있습니다.)

DefaultConnection의 연결 문자열 상자에 이전 자습서의 Web.Test.config 변환 파일에서 사용한 것과 동일한 값을 입력합니다.

Data Source=.\SQLExpress;Initial Catalog=aspnet-Test;Integrated Security=True;Pooling=False;MultipleActiveResultSets=True

업데이트 데이터베이스를 지워 둡니다.

게시를 클릭합니다.

Visual Studio는 코드 변경 내용을 테스트 환경에 배포하고 브라우저를 Contoso University 홈페이지로 엽니다.

강사 페이지를 선택합니다.

애플리케이션이 이 페이지를 실행하면 데이터베이스에 액세스하려고 시도합니다. Code First 마이그레이션 데이터베이스가 최신 상태인지 확인하고 최신 마이그레이션이 아직 적용되지 않은 것을 찾습니다. Code First 마이그레이션 최신 마이그레이션을 적용하고 메서드를 Seed 실행한 다음 페이지가 정상적으로 실행됩니다. 시드된 데이터가 있는 새 Office 시간 열이 표시됩니다.

Instructors_page_with_OfficeHours_Test

프로덕션 환경에 데이터베이스 업데이트 배포

프로덕션 환경의 게시 프로필도 변경해야 합니다. 이 경우 업데이트된 .publishsettings 파일을 가져와 기존 프로필을 제거하고 새 프로필을 만듭니다. 업데이트된 파일에는 Cytanium의 SQL Server 데이터베이스에 대한 연결 문자열 포함됩니다.

테스트 환경에 배포할 때 보았듯이 더 이상 Web.Production.config변환 파일 에서 연결 문자열 변환이 필요하지 않습니다. 해당 파일을 열고 요소를 제거합니다 connectionStrings . 나머지 변환은 요소의 EnvironmentappSettingslocation Elmah 오류 보고서에 대한 액세스를 제한하는 요소에 대한 것입니다.

프로덕션용 새 게시 프로필을 만들기 전에 프로덕션 환경에 배포 자습서의 앞부분에서와 동일한 방식으로 업데이트된 .publishsettings 파일을 다운로드합니다. (Cytanium 제어판에서 웹 사이트를 클릭한 다음 contosouniversity.com 웹 사이트를 클릭합니다. 웹 게시 탭을 선택한 다음 이 웹 사이트의 게시 프로필 다운로드를 클릭합니다.) 이 작업을 수행하는 이유는 .publishsettings 파일에서 데이터베이스 연결 문자열 선택하기 위한 것입니다. 파일을 처음 다운로드할 때는 연결 문자열 사용할 수 없습니다. SQL Server Compact 사용 중이었으며 아직 Cytanium에서 SQL Server 데이터베이스를 만들지 않았기 때문입니다.

이제 게시 프로필을 업데이트하고 프로덕션 환경에 게시할 수 있습니다.

웹 게시 마법사를 열고 프로필 탭으로 전환합니다.

프로필 관리를 클릭한 다음 프로덕션 프로필을 삭제합니다.

웹 게시 마법사를 닫아 이 변경 사항을 저장합니다.

웹 게시 마법사를 다시 열고 가져오기를 클릭합니다.

임시 URL을 사용하는 경우 연결 탭에서 대상 URL 을 적절한 값으로 변경합니다.

다음을 클릭합니다.

설정 탭에서 새 데이터베이스 게시 개선 사항 사용을 클릭합니다.

SchoolContext에 대한 연결 문자열 드롭다운 목록에서 Cytanium 연결 문자열 선택합니다.

Selecting_Cytanium_connection_string

코드 실행 첫 번째 마이그레이션(애플리케이션 시작 시 실행)을 선택합니다.

DefaultConnection에 대한 연결 문자열 드롭다운 목록에서 Cytanium 연결 문자열 선택합니다.

프로필 탭을 선택하고 프로필 관리를 클릭한 다음 프로필 이름을 "contosouniversity.com - 웹 배포"에서 "프로덕션"으로 바꿉니다.

게시 프로필을 닫아 변경 사항을 저장한 다음 다시 엽니다.

게시를 클릭합니다. (실제 프로덕션 웹 사이트의 경우 프로덕션에app_offline.htm 복사하여 게시하기 전에 프로젝트 폴더에 배치한 다음 배포가 완료되면 제거합니다.)

Visual Studio는 코드 변경 내용을 테스트 환경에 배포하고 브라우저를 Contoso University 홈페이지로 엽니다.

강사 페이지를 선택합니다.

Code First 마이그레이션 테스트 환경에서와 동일한 방식으로 데이터베이스를 업데이트합니다. 시드된 데이터가 있는 새 Office 시간 열이 표시됩니다.

Instructors_page_with_OfficeHours_Prod

이제 SQL Server 데이터베이스를 사용하여 데이터베이스 변경이 포함된 애플리케이션 업데이트를 성공적으로 배포했습니다.

추가 정보

그러면 타사 호스팅 공급자에 ASP.NET 웹 애플리케이션을 배포하는 방법에 대한 이 자습서 시리즈가 완료됩니다. 이 자습서에서 다루는 topics 대한 자세한 내용은 MSDN 웹 사이트의 ASP.NET 배포 콘텐츠 맵을 참조하세요.

감사의 말

이 자습서 시리즈의 콘텐츠에 중요한 기여 다음 사용자에게 감사드립니다.