다음을 통해 공유


코드로 데이터 관련 개체 작업

LightSwitch에서는 데이터를 설명하는 개체 및 멤버를 생성합니다.이러한 개체 및 멤버의 이름은 솔루션에 있는 항목의 이름과 일치합니다.예를 들어, 이름이 Customer인 테이블을 추가하면 LightSwitch는 이름이 Customer인 개체를 생성합니다.이 항목에서는 LightSwitch에 의해 생성되는 개체의 각 형식에 대해 설명합니다.이러한 개체 및 멤버를 사용하는 코드 예제를 보고 일반적인 데이터 관련 작업을 수행하려면 코드를 사용하여 데이터 관련 작업 수행를 참조합니다.

생성된 개체 및 멤버의 계층 구조

다음 그림은 데이터 모델의 생성된 개체 및 멤버를 요약합니다.

생성된 개체의 계층 구조

Application

Application 개체는 응용 프로그램의 개체에 대해 최상위 수준의 액세스를 제공합니다.Application 개체에 액세스하고 코드 편집기에서 사용자 코드 파일을 연 다음 Application을 입력합니다.Application 및 ","을 입력한 후 IntelliSense에 표시되는 메서드 및 속성 유형은 코드를 작성하는 코드 파일에 따라 변경됩니다.대부분의 경우 Application 개체의 속성을 사용하여 현재 사용자를 나타내는 개체를 얻을 수 있습니다.

데이터 작업 영역

DataWorkspace 개체는 모든 데이터 액세스에 대한 최상위 수준의 개체입니다.DataWorkspace 개체는 프로젝트에 있는 각 데이터 원본에 대한 속성을 포함합니다.예를 들어, NorthwindData라는 데이터 소스가 있는 경우 LightSwitch가 NorthwinddData라는 속성을 생성합니다.코드 편집기에서 DataWorkspace을(를) 입력하면 드롭다운 목록에서 NorthwindData 속성을 사용할 수 있습니다.

다음 그림은 드롭다운 목록에 나타날 수 있는 생성된 멤버 중 일부를 보여 줍니다.

DataWorkspace 개체의 데이터 소스 속성

데이터 소스

LightSwitch에서는 사용자 프로젝트의 각 데이터 원본에 대한 개체를 생성합니다.이 개체에는 데이터에 액세스하는 데 사용할 수 있는 멤버가 포함되어 있습니다.데이터 원본 개체의 멤버에는 엔터티 집합 속성 및 쿼리 메서드가 포함됩니다.

다음 그림은 드롭다운 목록에 나타날 수 있는 생성된 멤버 중 일부를 보여 줍니다.

데이터 소스 개체의 멤버

Gg445195.collapse_all(ko-kr,VS.110).gif엔터티 집합 속성

엔터티 집합 속성은 엔터티의 컬렉션을 반환합니다.LightSwitch에서는 데이터 원본의 각 엔터티에 대한 엔터티 집합 속성을 생성합니다.예를 들어, 사용자의 데이터 소스에 Customer라는 엔터티가 포함되어 있을 경우 LightSwitch는 Customers라는 속성을 생성합니다.Customer 엔터티 컬렉션을 나타내는 EntitySet 개체를 얻으려면 Customers 속성을 사용할 수 있습니다.

EntitySet 개체에는 현재 사용자에게 컬렉션에 있는 엔터티를 읽기, 업데이트 또는 삭제할 권한이 있는지 여부를 확인하는 데 사용할 수 있는 멤버가 포함되어 있습니다.자세한 내용은 코드를 사용하여 데이터 관련 작업 수행를 참조하십시오.

[!참고]

EntitySet은 엔터티 컬렉션 개체의 한 유형입니다.코드 성능의 최적화를 위해, 작성 중인 비즈니스 논리 유형에 대한 올바른 엔터티 컬렉션 개체를 사용할 수 있는지 확인합니다.자세한 내용은 엔터티 컬렉션 개체 및 성능을 참조하십시오.

Gg445195.collapse_all(ko-kr,VS.110).gif쿼리 메서드

쿼리 메서드는 쿼리의 결과를 가져옵니다.LightSwitch에서는 데이터 원본에 정의된 각 쿼리의 메서드를 생성합니다.메서드 이름은 쿼리 이름과 일치합니다.쿼리는 단일 엔터티 또는 형식이 IDataServiceQueryable인 엔터티의 컬렉션을 반환할 수 있습니다.

[!참고]

IDataServiceQueryable<T>은 엔터티 컬렉션 개체의 한 유형입니다.코드 성능의 최적화를 위해, 작성 중인 비즈니스 논리 유형에 대한 올바른 엔터티 컬렉션 개체를 사용할 수 있는지 확인합니다.자세한 내용은 엔터티 컬렉션 개체 및 성능을 참조하십시오.

기본적으로 LightSwitch는 데이터 소스의 각 엔터티에 대해 다음 쿼리 메서드를 생성합니다.

  1. <Entity Name>_Single

  2. <Entity Name>_SingleOrDefault

두 메서드 모두 기본 키 세그먼트를 허용하고 단일 엔터티 개체를 반환합니다.엔터티가 반환되지 않으면 <Entity Name>_Single 메서드는 <Entity Name>_SingleOrDefault 메서드가 Null 값을 반환하는 곳에 (Visual Basic에서는 Nothing) 예외를 보냅니다.

엔터티

LightSwitch에서는 엔터티 컬렉션의 각 엔터티에 대한 EntityObject를 생성합니다.예를 들어, 코드가 주문 컬렉션을 검색했다면 컬렉션에는 각각의 주문을 대표하는 EntityObject가 포함됩니다.EntityObject에는 엔터티 삭제, 읽기 또는 엔터티 속성 값을 업데이트하거나 관련된 엔터티를 얻는 데 사용할 수 있는 멤버가 들어 있습니다.EntityObjectEntitySet와 같은 엔터티 컬렉션 개체에서 얻거나 엔터티를 반환하는 쿼리 메서드를 호출하여 얻을 수 있습니다.자세한 내용은 코드를 사용하여 데이터 관련 작업 수행를 참조하십시오.

다음 그림은 myOrder라는 Order 엔터티의 멤버를 보여 줍니다.Order 엔터티에는 OrderDate, OrderID 및 Freight와 같은 엔터티 속성이 포함되어 있습니다.Order 엔터티에는 관련된 Order_Details 컬렉션 및 주문한 Customer를 얻을 데 사용할 수 있는 멤버를 갖고 있습니다.

엔터티 개체의 속성

이 예제에서 Customer 속성은 Customer 엔터티를 반환합니다.Customer 엔터티는 Customer-Order 관계의 한쪽에 있습니다.

Order_Details 속성은 Order_Details 엔터티의 컬렉션을 반환합니다.Order_Details 엔터티는 Order-Order_Details 관계의 많은 쪽에 있습니다.Order_Details 컬렉션 개체는 EntityCollection의 형식입니다.

이 그림에는 Order_DetailsQuery라는 속성도 나와 있습니다.Query로 끝나는 속성은 IDataServiceQueryable 개체를 반환합니다.

[!참고]

EntityCollectionIDataServiceQueryable 모두 엔터티 컬렉션 개체의 유형입니다.코드 성능의 최적화를 위해, 작성 중인 비즈니스 논리 유형에 대한 올바른 엔터티 컬렉션 개체를 사용할 수 있는지 확인합니다.자세한 내용은 엔터티 컬렉션 개체 및 성능을 참조하십시오.

엔터티 컬렉션 개체 및 성능

LINQ 식에서 엔터티 컬렉션 개체를 사용할 때 LightSwitch는 서버 계층에서 엔터티를 검색하는 작업을 수행합니다.사용하는 개체의 형식은 LightSwitch가 컬렉션에 있는 모든 엔터티를 검색하거나 하위 집합만 검색할지 여부를 결정합니다.예상대로 코드가 수행되도록 하려면 작성 중인 비즈니스 논리에 대한 가장 적절한 컬렉션 개체를 선택합니다.엔터티 컬렉션 개체의 두 가지 유형: LightSwitch가 원격으로 LINQ 식을 평가하고 LightSwitch가 로컬로 LINQ 식을 평가하게 하는 개체입니다.

Gg445195.collapse_all(ko-kr,VS.110).gifLINQ 연산: 원격 VS. 로컬 실행

EntitySet 또는 IDataServiceQueryable 개체를 LINQ 식에 사용하면 LightSwitch는 서버층의 데이터 서비스에 전체 LINQ 식을 전달합니다.그런 다음 식의 결과가 호출 코드에 다시 전달됩니다.이 유형의 쿼리는 잘 실행됩니다. 쿼리를 만족하는 엔터티만 호출 코드에 반환되기 때문입니다.단, 쿼리 연산자의 하위 집합만 데이터 서비스에서 지원됩니다.식에서 다른 LINQ 연산자를 요구하는 경우 다른 유형의 컬렉션 개체를 사용해 보십시오.

다음 그림은 IDataServiceQueryable 개체를 사용하는 LINQ 식을 보여 줍니다.이 예제는 전체 식을 데이터 서비스에 전달하고 쿼리 조건을 만족하는 Order 엔터티를 반환하는 LINQ 연산을 보여 줍니다.

쿼리 식의 원격 실행

EntityCollection 또는 IEnumerable 개체를 LINQ 식에서 사용하면 LightSwitch는 데이터 서비스에 확장을 전달하지 않습니다.대신 LightSwitch는 지정된 형식의 모든 엔터티를 검색합니다.그런 다음 식이 전체 컬렉션에 로컬로 적용됩니다.엔터티 컬렉션이 클 경우 이 유형의 쿼리 실행으로 인해 성능이 저하될 수 있습니다.그러나 사용자의 코드는 LINQ 연산자의 전체 집합을 사용할 수 있습니다.또한 코드에서 전체 컬렉션 엔터티를 다른 메서드에 전달할 때 좋은 방법입니다.

다음 그림은 EntityCollection 개체를 사용하는 LINQ 식을 보여 줍니다.이 예제는 특정 고객에 대한 모든 Order 엔터티를 검색하는 LINQ 작업을 보여 줍니다.그런 다음 쿼리 조건이 전체 컬렉션에 로컬로 적용됩니다.

쿼리 식의 로컬 실행

Gg445195.collapse_all(ko-kr,VS.110).gif예제: 코드의 엔터티 컬렉션 개체 가져오기

다음은 Northwind 샘플 데이터베이스에서 Order 엔터티의 컬렉션을 얻을 수 있는 방법에 대해 설명합니다.

이 엔터티 컬렉션 개체 얻기

이 코드 사용

원격 또는 로컬 실행

EntitySet

DataWorkspace.Northwind.Orders

또는

myOrder.Details.EntitySet()

Remote

IDataServiceQueryable

myCustomer.OrdersQuery

또는

DataWorkspace.Northwind.Orders.GetQuery()

Remote

EntityCollection

myCustomer.Orders

Local

IEnumerable

myCustomer.OrdersQuery.Execute()

또는

DataWorkspace.Northwind.Orders.GetQuery().Execute()

Remote

참고 항목

개념

코드를 사용하여 데이터 관련 작업 수행

LightSwitch에서 코드 작성

기타 리소스

데이터: 응용 프로그램 뒤의 정보