Windows Phone での LINQ to SQL のサポート

2012/02/09

Windows Phone OS 7.1 では、アプリケーションで LINQ to SQL を使用してローカル データベースにリレーショナル データを格納することができます。Windows Phone はほとんどの LINQ to SQL 機能をサポートしていますが、いくつか制限事項があります。このトピックでは、それらの制限事項について説明します。ローカル データベースの使用の詳細については、「Windows Phone のローカル データベースの概要」を参照してください。

注注:

Windows Phone アプリケーション専用の新機能がいくつか LINQ to SQL に追加されています。たとえば、ローカル データベース上で複数のインデックスを作成したり、スキーマをプログラミングによって更新したりできます。これらの機能の API リファレンスについては、Microsoft.Phone.Data.Linq および Microsoft.Phone.Data.Linq.Mapping の説明を参照してください。

Windows Phone はほとんどの LINQ to SQL 機能をサポートしていますが、いくつか制限事項があります。アプリケーション内でローカル データベースの操作を行う場合に考慮すべき LINQ to SQL サポート関連事項を次のリストで説明します。

  • ExecuteCommand は未サポート: Windows Phone では、そのままの Transact-SQL、データ定義言語 (DDL)、およびデータ モデリング言語 (DML) のステートメントの実行はサポートされていません。

  • ADO.NET オブジェクト (DataReader など) は未サポート: LINQ to SQL クエリーからのデータはすべて、データ コンテキストによって指定された型のオブジェクト コレクションに入れて返されます。

  • Microsoft SQL Server Compact Edition (SQL CE) のデータ型のみサポート: SQL CE は、ローカル データベースの基になっているデータベース テクノロジーです。SQL CE のデータ型の完全なリストについては、「データ型 (SQL Server Compact)」を参照してください。

  • Table.IListSource.GetList メソッドは未サポート: テーブル内のすべての内容にバインドするには、テーブル全体にクエリを実行し、そのクエリにバインドします。挿入と削除は、ビジネス ロジックで扱います。

  • BinaryFormatter は未サポート: カスタム型を SQL Server の Binary データ型または VarBinary データ型に変換するには、データ コンテキスト プロパティで LINQ to SQL CustomType を実装するか、またはデータ コンテキスト プロパティを型 byte[] または System.Data.Linq.Binary にします。LINQ to SQL CustomType を実装するには、まず ToString()Parse() を実装するカスタム クラスを作成し、次に、そのクラスをデータ コンテキスト内でプロパティとして使用します。LINQ to SQL は、CustomType から CharNCharNVarCharTextXML などの任意の SQL Server 文字列型へのマッピングを行えます。

  • Take() には LINQ クエリ内に定数値が必要: SQL CE では、Transact-SQL TOP ステートメント内でのクエリで取得した値の使用はサポートされていません。Take メソッド内で変数値を使用したい場合は、その Take メソッドを使用するクエリとは別のクエリ内で値を計算してください。

  • Skip() と Take() には順序の決まったリストが必要: これらのメソッドは、一貫した方法で返される結果の順序に依存しています。

次の表に、他のプラットフォームと比べて Windows Phone で部分的にしかサポートされていないか、またはまったくサポートされていない LINQ to SQL API を示します。部分的にしかサポートされていないというのは、Windows Phone で使用できるようにその API に修正が加えられたことを意味します。Windows Phone 用の LINQ to SQL API の完全な詳細については、以下の名前空間のクラス ライブラリ リファレンスを参照してください。

注注:

Microsoft.Phone LINQ to SQL API は、Windows Phone にしか使用できません。Microsoft.Phone.Data.LinqMicrosoft.Phone.Data.Linq.Mapping は Windows Phone でしか使用できないため、この表には掲載していません。

System.Data.Linq

System.Data.Linq の以下のメンバーは、Windows Phone 上で部分的にしかサポートされていないか、またはまったくサポートされていません。

名前

部分的にサポートされています

サポートされていません

DataContext

クラス

部分的にサポート

-

EntitySet<T>

クラス

部分的にサポート

-

TableSet<T>

クラス

部分的にサポート

-

IFunctionResult

インターフェイス

-

サポートなし

IMultipleResults

インターフェイス

-

サポートなし

ISingleResult<T>

インターフェイス

-

サポートなし

System.Data.Linq.Mapping

System.Data.Linq.Mapping の以下のメンバーは、Windows Phone で部分的にしかサポートされていないか、またはまったくサポートされていません。

名前

部分的にサポートされています

サポートされていません

MetaDataMember

クラス

部分的にサポート

-

MetaModel

クラス

部分的にサポート

-

FunctionAttribute

クラス

-

サポートなし

MetaFunction

クラス

-

サポートなし

MetaParameter

クラス

-

サポートなし

ParameterAttribute

クラス

-

サポートなし

ProviderAttribute

クラス

-

サポートなし

ResultTypeAttribute

クラス

-

サポートなし

XmlMappingSource

クラス

-

サポートなし

表示: