연습: 저장 프로시저를 사용하여 레코드 업데이트
SQL Server 데이터베이스에서 직접 저장된 프로시저를 호출할 수 없습니다 LightSwitch, 있지만 저장된 프로시저를 노출 하 고 다음에서 서비스에 액세스 하는 Windows 통신 Foundation (WCF) 리치 인터넷 (RIA) 응용 프로그램 서비스를 만들 수 있습니다 사용자 LightSwitch 응용 프로그램입니다.이 연습에서는 삽입, 업데이트 및 고객 레코드를 삭제 하는 방법을 보여 줍니다 있는 LightSwitch 응용 프로그램을 사용 하 여 저장 프로시저 및 WCF RIA 서비스.
대부분의 데이터베이스 관리자가 테이블에서 직접 액세스 대신 읽기 전용 뷰를 제공 하 고 삽입, 업데이트 및 레코드를 삭제 하는 저장된 프로시저를 제공 불가LightSwitch저장된 프로시저는 모든 데이터베이스 레코드를 업데이트 하는 저장된 프로시저를 사용 하 여 처음에 사용할 수 없는 것 처럼 보일 있도록 인식 하지 못합니다.약간의 추가 작업을 수행 하는 경우 이러한 데이터베이스를 실제로 사용할 수 있습니다 LightSwitch.
사전 요구 사항
이 연습에서는 Northwind 데이터베이스에서 사용 된 LightSwitch 둘러보기 자습서.자세한 내용은 Northwind 샘플 데이터베이스 설치을 참조하십시오.
저장된 프로시저 만들기
대부분의 경우 데이터베이스에 이미 존재 하는 저장된 프로시저를 이용 합니다.Northwind 데이터베이스가 필요한 저장된 프로시저를 삽입, 업데이트 및 추가 해야 하므로 고객 레코드를 삭제할 수 없습니다.
저장된 프로시저를 추가 하려면
메뉴 모음에서 선택 보기, SQL Server 개체 탐색기.
에 SQL Server 개체 탐색기 창에서 확장은 NORTHWIND 데이터베이스 노드를 및 다음 선택 프로그래밍.
확장 된 프로그래밍 노드를 클릭 하 고 다음을 선택 저장 프로시저.
바로 가기 메뉴를 열고 저장 프로시저, 다음을 선택 하 고 새 저장 프로시저 추가.
에 코드 편집기의 내용을 다음 Transact SQL 코드로 대체 하 고 선택의 업데이트 단추.
CREATE Procedure [dbo].[InsertCustomer] @CustomerID nchar(5), @CompanyName nvarchar(40), @ContactName nvarchar(30), @ContactTitle nvarchar(30), @Address nvarchar(60), @City nvarchar(15), @Region nvarchar(15), @PostalCode nvarchar(10), @Country nvarchar(15), @Phone nvarchar(24), @Fax nvarchar(24) AS INSERT INTO [dbo].[Customers] ([CustomerID] ,[CompanyName] ,[ContactName] ,[ContactTitle] ,[Address] ,[City] ,[Region] ,[PostalCode] ,[Country] ,[Phone] ,[Fax]) VALUES (@CustomerID ,@CompanyName ,@ContactName ,@ContactTitle ,@Address ,@City ,@Region ,@PostalCode ,@Country ,@Phone ,@Fax)
에 데이터베이스 업데이트 미리 보기 대화 상자에서 선택 된 업데이트 데이터베이스 단추.
InsertCustomer 저장된 프로시저를 데이터베이스에 추가 됩니다.
바로 가기 메뉴를 열고 저장 프로시저, 다음을 선택 하 고 새 저장 프로시저 추가.
에 코드 편집기의 내용을 다음 Transact SQL 코드로 대체 하 고 선택의 업데이트 단추.
CREATE PROCEDURE [dbo].[UpdateCustomer] @CustomerID nchar(5), @CompanyName nvarchar(40), @ContactName nvarchar(30), @ContactTitle nvarchar(30), @Address nvarchar(60), @City nvarchar(15), @Region nvarchar(15), @PostalCode nvarchar(10), @Country nvarchar(15), @Phone nvarchar(24), @Fax nvarchar(24) AS UPDATE [dbo].[Customers] SET [CompanyName] = @CompanyName ,[ContactName] = @ContactName ,[ContactTitle] = @ContactTitle ,[Address] = @Address ,[City] = @City ,[Region] = @Region ,[PostalCode] = @PostalCode ,[Country] = @Country ,[Phone] = @Phone ,[Fax] = @Fax WHERE CustomerID=@CustomerID
에 데이터베이스 업데이트 미리 보기 대화 상자에서 선택 된 업데이트 데이터베이스 단추.
UpdateCustomer 저장된 프로시저를 데이터베이스에 추가 됩니다.
바로 가기 메뉴를 열고 저장 프로시저, 다음을 선택 하 고 새 저장 프로시저 추가.
에 코드 편집기의 내용을 다음 Transact SQL 코드로 대체 하 고 선택의 업데이트 단추.
CREATE PROCEDURE [dbo].[DeleteCustomer] @CustomerID nchar(5) AS DELETE FROM [dbo].[Customers] WHERE CustomerID=@CustomerID
에 데이터베이스 업데이트 미리 보기 대화 상자에서 선택 된 업데이트 데이터베이스 단추.
DeleteCustomer 저장된 프로시저를 데이터베이스에 추가 됩니다.
엔터티 데이터 모델 만들기
다음 단계는 삽입, 업데이트 및 방금 추가한 저장된 프로시저를 사용 하 여 레코드를 삭제할 수는 Entity Framework 데이터 모델을 만드는 것입니다.
데이터 모델을 만들려면
메뉴 모음에서 파일, 새로 만들기, 프로젝트를 선택합니다.
에 새 프로젝트 대화 상자에서 하나를 확장은 Visual Basic 또는 C# 노드를 다음 선택의 클래스 라이브러리 템플릿.
에 이름 텍스트 상자에 입력 NorthwindService, 다음 선택은 확인 단추.
솔루션 탐색기, 바로 가기 메뉴를 엽니다의 MyProject 노드를 클릭 하 고 다음을 선택 열기.
에 대상 프레임 워크 목록에서 선택 .NET Framework 4.
솔루션 탐색기, 바로 가기 메뉴를 열고 NorthwindService, 선택 추가, 다음 선택 새 항목.
에 새 항목 추가 대화 상자에서 선택 된 ADO.NET 엔터티 데이터 모델 템플릿.
에 이름 텍스트 상자에 입력 Northwind.edmx, 다음 선택은 추가 단추.
에 엔터티 데이터 모델 마법사, 선택의 데이터베이스에서 생성 아이콘을 클릭 하 고 다음을 선택의 다음 단추.
에 데이터 연결 선택 페이지에서 선택 된 새 연결 단추.
에 연결 속성 대화 상자에 서버 이름 텍스트 상자에서 Northwind 데이터베이스를 설치 된 서버의 이름을 입력 합니다.
J# 정보 이름에서 찾을 수 있습니다 SQL Server 개체 탐색기.
에 데이터베이스 이름 선택 또는 입력 텍스트 상자에 입력 Northwind.
선택 된 확인 단추를 클릭 한 다음 선택은 다음 단추.
에 데이터베이스 개체 선택 및 설정 페이지에서 확장의 테이블 노드를 선택한 다음 선택은 고객 확인란을 선택 합니다.
확장은 저장 프로시저 및 함수 노드를 선택의 DeleteCustomer, InsertCustomer, 및 UpdateCustomer 확인란을 선택한 다음 선택은 마침 단추.
엔터티 모델을 생성 하는 Northwind.edmx 데이터베이스 다이어그램이 나타납니다.
[!참고]
경우는 보안 경고 선택 대화 상자가 나타나면는 확인 단추 템플릿을 실행 합니다.
바로 가기 메뉴를 열고를 고객 엔터티를 다음 선택 저장 프로시저 매핑.
에 매핑 정보 창에서의 < 삽입 기능 선택 > 목록에서 선택 InsertCustomer.
에 < 업데이트 기능 선택 > 목록에서 선택 UpdateCustomer.
에 < 삭제 기능 선택 > 목록에서 선택 DeleteCustomer.
닫기는 Northwind.edmx 디자이너.
솔루션 탐색기, 선택은 모든 파일 표시 도구 모음 단추입니다.
노드를 확장 Northwind.edmx, 및 다음 삭제 된 Northwind.tt 및 Northwind.Context.tt 파일.
열려 있는 Northwind.edmx 파일과 외부에서 공백 문자를 강조 표시는 고객 엔터티.
에 속성 창에서 값을 변경에 코드 생성 전략 속성을 기본.
메뉴 모음에서 선택 빌드, 빌드 NorthwindService.
삽입, 업데이트 및 저장된 프로시저를 사용 하 여 레코드를 삭제할 수 있는 Entity Framework 데이터 모델을 만들었습니다.
WCF RIA 서비스 만들기
WCF RIA 서비스를 만드는 경우를 LightSwitch 응용 프로그램을 Entity Framework 데이터 모델을 데이터 원본으로 소비할 수 있습니다.
서비스를 만들려면
솔루션 탐색기, 바로 가기 메뉴를 엽니다의 NorthwindService 선택, 프로젝트 추가, 다음 선택 새 항목.
에 새 항목 추가 대화 상자에서 선택 된 도메인 서비스 클래스 템플릿.
에 이름 텍스트 상자에 입력 NorthwindService, 다음 선택은 추가 단추.
에 새 도메인 서비스 클래스 추가 대화 상자에서 선택 된 확인 단추.
솔루션 탐색기, 바로 가기 메뉴를 열고 Northwind 서비스, 다음 선택 참조 추가.
선택은 확장 노드를 선택의 System.ServiceModel.DomainServices.EntityFramework 확인란을 선택한 다음 선택은 확인 단추.
다음 코드를 추가 된 NorthwindService 클래스:
Imports System.ServiceModel.DomainServices.EntityFramework Public Class NorthwindService Inherits LinqToEntitiesDomainService(Of NorthwindEntities) <Query(IsDefault:=True)> Public Function GetCustomers() As IQueryable(Of Customer) Return Me.ObjectContext.Customers End Function Public Sub InsertCustomer(ByVal customer As Customer) If ((customer.EntityState = EntityState.Detached) = False) Then Me.ObjectContext.ObjectStateManager. ChangeObjectState(customer, EntityState.Added) Else Me.ObjectContext.Customers.AddObject(customer) End If End Sub Public Sub UpdateCustomer(ByVal currentCustomer As Customer) Me.ObjectContext.Customers.AttachAsModified(currentCustomer, Me.ChangeSet.GetOriginal(currentCustomer)) End Sub Public Sub DeleteCustomer(ByVal customer As Customer) If ((customer.EntityState = EntityState.Detached) = False) Then Me.ObjectContext.ObjectStateManager. ChangeObjectState(customer, EntityState.Deleted) Else Me.ObjectContext.Customers.Attach(customer) Me.ObjectContext.Customers.DeleteObject(customer) End If End Sub End Class
namespace NorthwindService { public class NorthwindService : LinqToEntitiesDomainService<NorthwindEntities> { [Query(IsDefault = true)] public IQueryable<Customer> GetCustomers() { return this.ObjectContext.Customers; } public void InsertCustomer(Customer customer) { if ((customer.EntityState != EntityState.Detached)) { this.ObjectContext.ObjectStateManager. ChangeObjectState(customer, EntityState.Added); } else { this.ObjectContext.Customers.AddObject(customer); } } public void UpdateCustomer(Customer currentCustomer) { this.ObjectContext.Customers.AttachAsModified(currentCustomer, this.ChangeSet.GetOriginal(currentCustomer)); } public void DeleteCustomer(Customer customer) { if ((customer.EntityState != EntityState.Detached)) { this.ObjectContext.ObjectStateManager. ChangeObjectState(customer, EntityState.Deleted); } else { this.ObjectContext.Customers.Attach(customer); this.ObjectContext.Customers.DeleteObject(customer); } } } }
메뉴 모음에서 선택 빌드, 빌드 NorthwindService.
메뉴 모음에서 선택 파일, 모두 저장.
LightSwitch 응용 프로그램 만들기
마지막 단계는 방금 만든 WCF RIA 서비스를 소비 하는 LightSwitch 응용 프로그램을 만드는 것입니다.
응용 프로그램을 만들려면
메뉴 모음에서 파일, 새로 만들기, 프로젝트를 선택합니다.
에 새 프로젝트 대화 상자에서 선택의 LightSwitch 범주를 클릭 하 고 다음 중 하나를 선택의 LightSwitch 응용 프로그램 (Visual Basic) 또는 LightSwitch 응용 프로그램 (Visual C#) 프로젝트 템플릿.
에 이름 텍스트 상자에 입력 Northwind, 다음 선택은 확인 단추.
메뉴 모음에서 선택 파일, 추가, 기존 프로젝트.
선택 된 NorthwindService 프로젝트를 하 고 선택 열기.
솔루션 탐색기에서 Northwind 프로젝트에 대 한 바로 가기 메뉴를 열고는 데이터 원본 노드를 다음 선택 데이터 소스 추가.
에 연결 된 데이터 소스 마법사, 선택은 WCF RIA 서비스 아이콘.
선택 된 다음 단추를 클릭 한 다음 선택은 참조 추가 단추.
에 참조 관리자 대화 상자에서 선택 된 찾아보기 단추.
NorthWindService 프로젝트는 Bin\Release 폴더의 선택의 NorthwindService.dll 파일과 다음 선택의 추가 단추.
선택의 확인 단추를 클릭 하 여 대화 상자를 닫습니다 및 다음 선택은 다음 단추.
에 선택 된 데이터 소스 개체 페이지에서 선택의 엔터티 확인란을 선택한 다음 선택은 마침 단추.
솔루션 탐색기에 NorthwindService 열린 프로젝트의 App.Config 파일.
에 ConnectionStrings 섹션에서 시작 되는 연결 문자열을 복사 <add name’”NorthwindEntities”.
솔루션 탐색기, 선택은 Northwind 프로젝트를 하 고 선택 파일 보기 의 목록 도구 모음에서.
확장 된 서버 노드를 클릭 하 고 다음을 선택 Web.config.
ConnectionStrings 섹션에서 복사한 연결 문자열을 붙여 넣습니다.
이제 완벽 하 게 작동 데이터 소스에 삽입, 업데이트 및 저장된 프로시저를 사용 하 여 레코드를 삭제할 수 있습니다.
다음 단계
만들 수 있는 사용자 LightSwitch 화면 및 비즈니스 논리 평소와 신속 하 고 쉽게 확인 작동 중인 응용 프로그램이 저장된 프로시저를 사용 하 여.