다음을 통해 공유


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

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

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

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

  • 엔터티 필드에 특성 적용

WCF RIA 서비스 디자인에 대한 자세한 내용을 보려면, WCF RIA 서비스를 참조하십시오.

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

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

연결 문자열 저장

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

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

연결 문자열 검색

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

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);
    }

연결 문자열 사용

도메인 서비스 클래스에서 원하는 방식으로 데이터에 연결할 연결 문자열을 사용할 수 있습니다. 하지만 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가 엔터티 컬렉션을 반환하는 데 사용할 수 있는 기본 메서드를 확인해야 합니다. 또한 데이터를 반환하는 다른 메서드를 정의할 수 있습니다.

LightSwitch에서 기본적으로 사용하는 쿼리 메서드 식별

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

<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;
}

다른 쿼리 메서드 만들기

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

엔터티 필드에 특성 적용

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

특성

LightSwitch의 속성 사용

AssociationAttribute

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

0 혹은 일대다 관계를 설정하기 위해, ThisKey 속성을 관계의 한쪽에 존재하는 엔터티의 기본 키에 설정합니다.

1 혹은 일대다 관계를 설정하기 위해, ThisKey 속성을 관계의 한쪽에 존재하는 엔터티의 기본 키에 설정합니다. OtherKey 속성을 관계의 영-대-일에 존재하는 엔터티의 기본 키에 설정합니다.

DisplayAttribute

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

EditableAttribute

LightSwitch에서, AllowEdit 속성을 False로 설정하는 경우, 읽기 전용 필드의 속성이 True가 되도록 설정합니다.

EnumDataTypeAttribute

EnumType 속성을 열거형에 설정한 경우, LightSwitch 열거형의 값을 사용하여 필드에 대한 선택 목록을 만듭니다.

KeyAttribute

LightSwitch에서, KeyAttribute 특성을 만약 엔터티의 기본 키로 사용하고 싶다면 사용합니다. 다중 키를 지정할 수 있습니다.

RangeAttribute

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

RequiredAttribute

LightSwitch에서 이 속성은 문자열 형식이 있는 필드에만 영향을 미칩니다. AllowEmptyStrings속성을 이 특성의 False에 설정하려면, LightSwitch, 필요 필드의 속성이 True로 설정되어여 합니다.

ScaffoldColumnAttribute

LightSwitch에서, Scaffold 속성을 True 로 설정하는 경우, 기본값으로 표시 속성을 True로 설정합니다.

StringLengthAttribute

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

StringLengthAttribute

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

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

  • ConcurrencyCheck

  • DataType

  • DisplayColumn

  • DisplayFormat

  • FilterUIHint

  • MetadataType

  • RegularExpression

  • ScaffoldTable

  • UIHintAttribute