LightSwitch용 WCF RIA 서비스를 만들기 위한 지침

이 항목에서는 LightSwitch 기반 응용 프로그램에서 WCF(Windows Communication Foundation) RIA(Rich Internet Application) 서비스를 만들고 사용하는 지침을 제공합니다.이 항목에서는 다음 작업에 대한 정보를 제공합니다.

  • WCF RIA 서비스의 도메인 서비스 클래스에서 연결 문자열 저장, 검색 및 사용

  • LightSwitch 기반 응용 프로그램에 사용할 쿼리 메서드 정의

  • 엔터티 필드에 특성 적용

WCF RIA 서비스 설계에 대한 자세한 내용은 WCF RIA Services를 참조하십시오.

연결 문자열 저장, 검색, 및 사용

WCF RIA 서비스의 도메인 서비스 클래스 내에서 데이터에 연결하려면 코드는 데이터 원본 공급자에 연결 문자열을 전달해야 합니다.서비스를 소비하는 개발자는 서비스에 연결될 때 LightSwitch 응용 프로그램의 web.config 파일에 연결 문자열을 저장할 수 있습니다.WCF RIA 서비스의 도메인 서비스 클래스에서 코드는 연결 문자열을 검색 및 사용할 수 있습니다.

Gg589479.collapse_all(ko-kr,VS.110).gif연결 문자열 저장

개발자가 LightSwitch에서 사용자의 WCF RIA 서비스에 연결할 때에는 데이터 소스 연결 문자열을 제공합니다.연결 문자열은 LightSwitch 응용 프로그램의 web.config 파일에 저장됩니다.자세한 내용은 방법: 데이터에 연결를 참조하십시오.

개발자가 올바른 연결 문자열을 제공하도록 하려면 문자열의 예상된 서식을 설명해주는 유용한 텍스트를 제공할 수 있습니다.이 텍스트는 데이터 원본 추가 마법사연결 문자열 상자에 나타납니다.이 텍스트를 입력하려면 도메인 서비스 클래스 위에 DescriptionAttribute 특성을 추가합니다.

Gg589479.collapse_all(ko-kr,VS.110).gif연결 문자열 검색

RIA WCF 서비스의 도메인 서비스 클래스에서 코드는 도메인 서비스 클래스(예를 들어, CustomerNamespace.CustomerService)의 정규화 된 이름을 참조하여 web.config 파일에서 연결 문자열을 검색할 수 있습니다.다음 예제에서는 도메인 서비스 클래스의 Initialize 메서드를 재정의하여 연결 문자열을 검색합니다.연결 문자열이 없으면 하드 코딩된 연결 문자열이 사용됩니다.

Public Overrides Sub Initialize _
    (context As System.ServiceModel.DomainServices.Server.DomainServiceContext)
    
    If (WebConfigurationManager.ConnectionStrings.Item(Me.[GetType]().FullName) _
        Is Nothing) OrElse [String].IsNullOrWhiteSpace _
    (WebConfigurationManager.ConnectionStrings.Item _
     (Me.[GetType]().FullName).ConnectionString) Then
        
        _connectionString = "data source=NorthwindDB;initial catalog= " _
            & "Northwind;user id=myID;password=myPassword"
    Else
        _connectionString = WebConfigurationManager.ConnectionStrings.Item _
            (Me.[GetType]().FullName).ConnectionString
    End If

    MyBase.Initialize(context)
End Sub
        
string _connectionString;
public override void Initialize
    (System.ServiceModel.DomainServices.Server.DomainServiceContext context)
    {
        if ((WebConfigurationManager.ConnectionStrings
            [(this.GetType().FullName)] == null) || 
            String.IsNullOrWhiteSpace(WebConfigurationManager.ConnectionStrings
            [this.GetType().FullName].ConnectionString))
        {
            _connectionString = "data source=NorthwindDB;initial catalog= " + 
                "Northwind;user id=myID;password=myPassword";
        }
        else
        {
            _connectionString = WebConfigurationManager.ConnectionStrings
                [this.GetType().FullName].ConnectionString;
        }
        base.Initialize(context);
    }

Gg589479.collapse_all(ko-kr,VS.110).gif연결 문자열 사용

도메인 서비스 클래스에서 원하는 방식으로 데이터에 연결할 연결 문자열을 사용할 수 있습니다.하지만 Visual Studio의 일부 기술의 경우 연결 문자열을 특정 방법으로 사용해야 합니다.예를 들어, ADO.NET 엔터티 데이터 모델을 사용하여 서비스에서 엔터티를 생성하는 경우 코드가 CreateObjectContext 메서드에서 연결 문자열을 반환해야 합니다.다음 예제는 서비스에서 제공하는 엔터티를 생성하기 위해 ADO.NET 엔터티 데이터 모델을 사용해야 하는 시나리오를 기준으로 합니다.이 예제는 CreateObjectContext 메서드를 재정의하고 연결 문자열을 Entity Framework 공급자에게 반환합니다.

Protected Overrides Function CreateObjectContext() As NorthwindEntities
    Dim Connection As New EntityConnectionStringBuilder()
    Connection.ProviderConnectionString = _connectionString
    Connection.Provider = "System.Data.SqlClient"
    Connection.Metadata = "res://*/NorthwindModel.csdl|" & _
                 "res://*/NorthwindModel.ssdl|" & _
                 "res://*/NorthwindModel.msl"

    Return New NorthwindEntities(Connection.ToString)
End Function
protected override NorthwindEntities2 CreateObjectContext()
{
    EntityConnectionStringBuilder Connection = new EntityConnectionStringBuilder();
    Connection.ProviderConnectionString = _connectionString;
    Connection.Provider = "System.Data.SqlClient";
    Connection.Metadata = "res://*/NorthwindModel.csdl|" +
                 "res://*/NorthwindModel.ssdl|" +
                 "res://*/NorthwindModel.msl";
    return new NorthwindEntities2(Connection.ToString());
}

LightSwitch에 사용되는 쿼리 메서드 정의

도메인 서비스 클래스에 있는 각 엔터티의 경우 LightSwitch가 엔터티 컬렉션을 반환하는 데 사용할 수 있는 기본 메서드를 확인해야 합니다.또한 데이터를 반환하는 다른 메서드를 정의할 수 있습니다.

Gg589479.collapse_all(ko-kr,VS.110).gifLightSwitch에서 기본적으로 사용하는 쿼리 메서드 식별

LightSwitch의 모든 엔터티는 컬렉션을 반환하는 하나 이상의 메서드를 갖습니다.이 메서드는 LightSwitch에 나타나고 개발자가 고객 또는 주문 같은 정보 목록을 표시하는 화면을 만들 수 있습니다.LightSwitch가 도메인 서비스 클래스에서 주어진 엔터티의 기본 컬렉션 메서드로 사용할 메서드를 확인해야 합니다.이 메서드를 식별하려면 메서드에 QueryAttribute 특성을 적용합니다.QueryAttributeIsDefault 속성을 True로 설정합니다.이 메서드는 엔터티 유형의 IEnumerable<T> 또는 IQueryable<T>을 반환해야 합니다.메서드에서 반환하는 컬렉션에는 엔터티의 모든 필드가 포함되어 있어야 합니다.쿼리에 매개 변수를 사용하면 안 됩니다.다음 예제에서는 QueryAttribute 특성을 Customers 엔터티의 GetCustomers 쿼리 메서드에 적용합니다.

<Query(IsDefault:=True)> _
Public Function GetCustomers() As IQueryable(Of Customer)
    Return Me.ObjectContext.Customers
End Function
[Query(IsDefault=true)]
public IQueryable<Customer> GetCustomers()
{
    return this.ObjectContext.Customers;
}

Gg589479.collapse_all(ko-kr,VS.110).gif다른 쿼리 메서드 만들기

원하는 만큼의 쿼리 메서드를 작성할 수 있습니다.각 쿼리 메서드는 메서드에 추가한 사용자 지정 논리를 기반으로 한 하나 이상의 엔터티를 반환할 수 있습니다.LightSwitch에서 비즈니스 논리에서 이 메서드를 사용하거나 데이터를 화면에 표시 수 있습니다.쿼리 메서드는 엔터티 형식, IEnumerable<T> 또는 IQueryable<T> 엔터티 형식을 반환해야 합니다.메서드 매개 변수는 LightSwitch에서 지원하는 Null 허용 및 단순 형식이어야 합니다.null 허용 형식에 대한 자세한 내용은 Nullable 값 형식(Visual Basic) 또는 nullable 형식(C# 프로그래밍 가이드)를 참조하십시오.LightSwitch에서 지원되는 단순 형식에 대한 자세한 내용은 방법: 데이터 필드 정의를 참조하십시오.

엔터티 필드에 특성 적용

도메인 서비스 클래스에서 엔터티 필드에 특성을 적용할 수 있습니다.다음 표는 특성을 사용하여 LightSwitch에서 원하는 효과를 달성하는 방법에 대한 지침을 제공합니다.

특성

LightSwitch의 속성 사용

AssociationAttribute

일 대 다 관계의 경우 관계의 한쪽에 존재하는 엔터티의 기본 키에 ThisKey 속성을 설정합니다.

0 또는 일 대 다 관계의 경우 관계의 아무쪽에 없거나 한쪽에 존재하는 엔터티의 기본 키에 ThisKey 속성을 설정합니다.

일 대 영 또는 일 대 일 관계의 경우 ThisKey 속성을 관계의 한쪽에 존재하는 엔터티의 기본 키에 설정합니다.OtherKey 속성을 관계의 0 대 1 쪽에 있는 엔터티의 기본 키에 설정합니다.

DisplayAttribute

LightSwitch에서 ShortName 또는 Name 속성을 사용하여 이 필드에 대해 표시할 이름을 지정합니다.Description 속성을 사용하여 사용자가 화면에서 필드를 포함하는 컨트롤을 가리킬 때 도구 설명으로 나타나게 할 텍스트를 지정합니다.

EditableAttribute

LightSwitch에서 AllowEdit 속성을 False에 설정하면 필드의 ReadOnly 속성을 True으로 설정합니다.

EnumDataTypeAttribute

EnumType 속성을 열거형으로 설정하면 LightSwitch는 열거 값을 사용하여 필드에 대한 선택 목록을 만듭니다.

KeyAttribute

LightSwitch에서 엔터티의 기본 키로 필드를 사용할 경우 KeyAttribute 특성을 사용합니다.다중 키를 지정할 수 있습니다.

RangeAttribute

이 특성을 사용하여 최대 및 최소 필드 값을 설정합니다.이 특성은 숫자가 아닌 데이터 형식에는 효과가 없습니다.

RequiredAttribute

LightSwitch에서 이 속성은 문자열 형식이 있는 필드에만 영향을 미칩니다.이 특성의 AllowEmptyStrings 속성을 False로 설정하면 LightSwitch에서, 필드의 Is Required 속성이 True으로 설정됩니다.

ScaffoldColumnAttribute

LightSwitch에서 Scaffold 속성을 True로 설정하면 기본으로 표시 속성이 로 설정됩니다.

StringLengthAttribute

LightSwitch에서 MaximumLength 속성을 사용하여 필드의 최대 길이 속성을 설정합니다.

StringLengthAttribute

LightSwitch에서 이 특성을 적용하는 경우 필드의 기본으로 표시 속성을 False으로 설정합니다.

다음 특성은 LightSwitch에서 아무 효과가 없습니다.

  • ConcurrencyCheck

  • DataType

  • DisplayColumn

  • DisplayFormat

  • FilterUIHint

  • MetadataType

  • RegularExpression

  • ScaffoldTable

  • UIHintAttribute