DataServiceCollection<T> 클래스
항목이 추가되거나 제거된 경우 또는 목록이 새로 고쳐진 경우 알림을 제공하는 동적 엔터티 컬렉션을 나타냅니다.
상속 계층
System.Object
System.Collections.ObjectModel.Collection<T>
System.Collections.ObjectModel.ObservableCollection<T>
System.Data.Services.Client.DataServiceCollection<T>
네임스페이스: System.Data.Services.Client
어셈블리: Microsoft.Data.Services.Client(Microsoft.Data.Services.Client.dll)
구문
‘선언
Public Class DataServiceCollection(Of T) _
Inherits ObservableCollection(Of T)
‘사용 방법
Dim instance As DataServiceCollection(Of T)
public class DataServiceCollection<T> : ObservableCollection<T>
generic<typename T>
public ref class DataServiceCollection : public ObservableCollection<T>
type DataServiceCollection<'T> =
class
inherit ObservableCollection<'T>
end
JScript는 제네릭 형식 및 메서드를 지원하지 않습니다.
유형 매개 변수
- T
엔터티 형식입니다.
DataServiceCollection<T> 유형에서 다음 멤버를 표시합니다.
생성자
맨 위로 이동
속성
이름 | 설명 | |
---|---|---|
Continuation | 다음 페이징된 결과 집합을 반환하는 데 사용되는 연속 개체를 가져옵니다. | |
Count | (Collection<T>에서 상속됨) | |
Item | (Collection<T>에서 상속됨) | |
Items | (Collection<T>에서 상속됨) |
맨 위로 이동
메서드
이름 | 설명 | |
---|---|---|
Add | (Collection<T>에서 상속됨) | |
BlockReentrancy | (ObservableCollection<T>에서 상속됨) | |
CheckReentrancy | (ObservableCollection<T>에서 상속됨) | |
Clear() | (Collection<T>에서 상속됨) | |
Clear(Boolean) | 컬렉션에서 모든 항목을 제거하고 선택적으로 DataServiceContext에서 모든 항목을 분리합니다. | |
ClearItems | (ObservableCollection<T>에서 상속됨) | |
Contains | (Collection<T>에서 상속됨) | |
CopyTo | (Collection<T>에서 상속됨) | |
Detach | 컬렉션의 모든 항목에 대한 DataServiceContext 추적을 사용하지 않도록 설정합니다. | |
Equals | (Object에서 상속됨) | |
Finalize | (Object에서 상속됨) | |
GetEnumerator | (Collection<T>에서 상속됨) | |
GetHashCode | (Object에서 상속됨) | |
GetType | (Object에서 상속됨) | |
IndexOf | (Collection<T>에서 상속됨) | |
Insert | (Collection<T>에서 상속됨) | |
InsertItem | 컬렉션의 지정한 인덱스에 지정된 항목을 추가합니다. (ObservableCollection<T>.InsertItem(Int32, T)을(를) 재정의함) | |
Load(IEnumerable<T>) | 엔터티 개체의 컬렉션을 컬렉션에 로드합니다. Silverlight용 WCF Data Services 5.0 클라이언트에서 지원되지 않습니다. | |
Load(T) | 단일 엔터티 개체를 컬렉션에 로드합니다. Silverlight용 WCF Data Services 5.0 클라이언트에서 지원되지 않습니다. | |
LoadAsync() | 엔터티의 탐색 속성을 나타낼 경우 항목을 컬렉션에 비동기적으로 로드합니다. Silverlight용 WCF Data Services 5.0 클라이언트에서만 지원됩니다. | |
LoadAsync(IQueryable<T>) | DataServiceQuery<TElement> 를 실행하여 컬렉션을 비동기적으로 로드합니다. Silverlight용 WCF Data Services 5.0 클라이언트에서만 지원됩니다. | |
LoadNextPartialSetAsync | 데이터의 다음 페이지를 컬렉션에 로드합니다. Silverlight용 WCF Data Services 5.0 클라이언트에서만 지원됩니다. | |
MemberwiseClone | (Object에서 상속됨) | |
Move | (ObservableCollection<T>에서 상속됨) | |
MoveItem | (ObservableCollection<T>에서 상속됨) | |
OnCollectionChanged | (ObservableCollection<T>에서 상속됨) | |
OnPropertyChanged | (ObservableCollection<T>에서 상속됨) | |
Remove | (Collection<T>에서 상속됨) | |
RemoveAt | (Collection<T>에서 상속됨) | |
RemoveItem | (ObservableCollection<T>에서 상속됨) | |
SetItem | (ObservableCollection<T>에서 상속됨) | |
ToString | (Object에서 상속됨) |
맨 위로 이동
이벤트
이름 | 설명 | |
---|---|---|
CollectionChanged | (ObservableCollection<T>에서 상속됨) | |
LoadCompleted | 비동기 로드 작업이 완료되면 발생합니다. Silverlight용 WCF Data Services 5.0 클라이언트에서만 지원됩니다. | |
PropertyChanged | (ObservableCollection<T>에서 상속됨) |
맨 위로 이동
명시적 인터페이스 구현
이름 | 설명 | |
---|---|---|
IList.Add | (Collection<T>에서 상속됨) | |
IList.Contains | (Collection<T>에서 상속됨) | |
ICollection.CopyTo | (Collection<T>에서 상속됨) | |
IEnumerable.GetEnumerator | (Collection<T>에서 상속됨) | |
IList.IndexOf | (Collection<T>에서 상속됨) | |
IList.Insert | (Collection<T>에서 상속됨) | |
IList.IsFixedSize | (Collection<T>에서 상속됨) | |
ICollection<T>.IsReadOnly | (Collection<T>에서 상속됨) | |
IList.IsReadOnly | (Collection<T>에서 상속됨) | |
ICollection.IsSynchronized | (Collection<T>에서 상속됨) | |
IList.Item | (Collection<T>에서 상속됨) | |
INotifyPropertyChanged.PropertyChanged | (ObservableCollection<T>에서 상속됨) | |
IList.Remove | (Collection<T>에서 상속됨) | |
ICollection.SyncRoot | (Collection<T>에서 상속됨) |
맨 위로 이동
주의
WCF Data Services는 클라이언트 응용 프로그램의 컨트롤에 대한 데이터 바인딩을 지원하는 DataServiceCollection<T> 클래스를 제공합니다. 이 클래스는 INotifyCollectionChanged 인터페이스를 구현하고 WPF(Windows Presentation Foundation) 및 Silverlight 기반 응용 프로그램에 대한 기본 데이터 바인딩 메커니즘인 ObservableCollection<T> 클래스에서 상속됩니다.
IEnumerable<T> 인터페이스를 구현하는 모든 컬렉션을 사용하여 ObservableCollection<T> 바인딩 컬렉션을 로드할 수 있습니다. 바인딩 컬렉션에 로드된 항목은 INotifyPropertyChanged 인터페이스를 구현해야 합니다. 자세한 내용은 컨트롤에 데이터 바인딩(WCF Data Services)을 참조하십시오.
예
다음 예제는 WPF에서 SalesOrders 창을 정의하는 XAML(Extensible Application Markup Language) 페이지에 대한 코드 숨김 페이지에서 가져온 것입니다. 창을 로드하면 관련 개체와 함께 고객을 국가별로 필터링하여 반환하는 쿼리 결과를 기준으로 DataServiceCollection<T>이 만들어집니다. 이 결과는 WPF 창의 루트 레이아웃 컨트롤인 StackPanel의 DataContext 속성에 바인딩됩니다.
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Data
Imports System.Windows.Documents
Imports System.Windows.Input
Imports System.Windows.Media
Imports System.Windows.Media.Imaging
Imports System.Windows.Navigation
Imports System.Windows.Shapes
Imports System.Data.Services.Client
Imports NorthwindClient.Northwind
Partial Public Class CustomerOrdersWpf
Inherits Window
Private context As NorthwindEntities
Private trackedCustomers As DataServiceCollection(Of Customer)
Private Const customerCountry As String = "Germany"
Private Const svcUri As String = "https://localhost:12345/Northwind.svc/"
Private Sub Window_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
Try
' Initialize the context for the data service.
context = New NorthwindEntities(New Uri(svcUri))
' Create a LINQ query that returns customers with related orders.
Dim customerQuery = From cust In context.Customers.Expand("Orders") _
Where cust.Country = customerCountry _
Select cust
' Create a new collection for binding based on the LINQ query.
trackedCustomers = New DataServiceCollection(Of Customer)(customerQuery)
' Bind the root StackPanel element to the collection
' related object binding paths are defined in the XAML.
Me.LayoutRoot.DataContext = trackedCustomers
Catch ex As DataServiceQueryException
MessageBox.Show("The query could not be completed:\n" + ex.ToString())
Catch ex As InvalidOperationException
MessageBox.Show("The following error occurred:\n" + ex.ToString())
End Try
End Sub
Private Sub saveChangesButton_Click(ByVal sender As Object, ByVal e As RoutedEventArgs)
' Save changes to the data service.
context.SaveChanges()
End Sub
End Class
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Data.Services.Client;
using NorthwindClient.Northwind;
namespace NorthwindClient
{
public partial class CustomerOrdersWpf : Window
{
private NorthwindEntities context;
private DataServiceCollection<Customer> trackedCustomers;
private const string customerCountry = "Germany";
private const string svcUri = "https://localhost:12345/Northwind.svc/";
public CustomerOrdersWpf()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
try
{
// Initialize the context for the data service.
context = new NorthwindEntities(new Uri(svcUri));
// Create a LINQ query that returns customers with related orders.
var customerQuery = from cust in context.Customers.Expand("Orders")
where cust.Country == customerCountry
select cust;
// Create a new collection for binding based on the LINQ query.
trackedCustomers = new DataServiceCollection<Customer>(customerQuery);
// Bind the root StackPanel element to the collection;
// related object binding paths are defined in the XAML.
LayoutRoot.DataContext = trackedCustomers;
}
catch (DataServiceQueryException ex)
{
MessageBox.Show("The query could not be completed:\n" + ex.ToString());
}
catch (InvalidOperationException ex)
{
MessageBox.Show("The following error occurred:\n" + ex.ToString());
}
}
private void saveChangesButton_Click(object sender, RoutedEventArgs e)
{
// Save changes to the data service.
context.SaveChanges();
}
}
}
다음은 위 예제의 SalesOrders 창을 WPF에서 정의하는 XAML입니다.
<Window x:Class="CustomerOrdersWpf"
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="https://schemas.openxmlformats.org/markup-compatibility/2006"
Height="423" Width="679" Loaded="Window_Loaded">
<StackPanel Orientation="Vertical" Height="Auto" Name="LayoutRoot" Width="Auto">
<Label Content="Customer ID" Margin="20,0,0,0" />
<ComboBox Name="customerIDComboBox" DisplayMemberPath="CustomerID" ItemsSource="{Binding}"
IsSynchronizedWithCurrentItem="True" SelectedIndex="0" Height="23" Width="120"
HorizontalAlignment="Left" Margin="20,0,0,0" VerticalAlignment="Center" />
<ListView ItemsSource="{Binding Path=Orders}" Name="ordersDataGrid" Margin="34,46,34,50">
<ListView.View>
<GridView AllowsColumnReorder="False" ColumnHeaderToolTip="Line Items">
<GridViewColumn DisplayMemberBinding="{Binding Path=OrderID, Mode=OneWay}"
Header="Order ID" Width="50"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=OrderDate, Mode=TwoWay}"
Header="Order Date" Width="50"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=Freight, Mode=TwoWay}"
Header="Freight Cost" Width="50"/>
</GridView>
</ListView.View>
</ListView>
<Button Name="saveChangesButton" Content="Save Changes" Click="saveChangesButton_Click"
Width="80" Height="30" Margin="450,0,0,0"/>
</StackPanel>
</Window>
스레드 보안
이 유형의 모든 공용 static(Visual Basic에서는 Shared) 멤버는 스레드로부터 안전합니다. 인스턴스 멤버는 스레드로부터의 안전성이 보장되지 않습니다.
참고 항목
참조
System.Data.Services.Client 네임스페이스