以下に、DataSource for Entity Framework の便利な機能をいくつか示します。
メモ:このバージョンの DataSource for Entity Framework には、Entity Framework 6 以上、.NET Framework 4.5 以上、および Visual Studio 2012 以上が必要です。
- 設計時コンポーネントによる Entity Framework の容易化
C1DataSource を使用して、デザインサーフェスでデータソースを直接設定できます。このとき、使いやすいプロパティダイアログを使用することで、記述するコードを最小限に抑えることができます。設計時に、C1DataSource コントロールを迅速に設定して、サーバー側のフィルタ、ソート、およびグループディスクリプタを適用できます。もちろん、必要に応じて、機能豊富なデータクラスライブラリを使用して、すべてをコードで実行することもできます。
- LiveLinq によるライブビュー
LINQ は、生データをカスタムビューに変換するために最適なツールです。C1DataSource では、LINQ クエリーステートメントを動的に実行できるので、LINQ がさらに強力になります。C1DataSource には C1LiveLinq が含まれています。これは、LINQ の機能を補完してクエリーを迅速化し、ライブビューを提供する拡張ライブラリです。LiveLinq では、LINQ の演算子を使用して、更新可能性と連結可能性を損なうことなく、必要に応じたビューを形成できます。"連結可能性" とは、ビューがソースの静的なスナップショットではないことを意味します。ビューは "ライブ" であり、データの変更が自動的に反映されます。LiveLinq を使用すると、データが変更されるたびにデータを再挿入しなくても、クエリー結果が最新の状態に保たれます。
- MVVM の簡略化
C1DataSource は、広く採用されている Model-View-ViewModel パターン(MVVM)を使用したプログラミングを簡略化します。MVVM アプリケーションを開発するには、多くのコードを記述する必要があります。これは、追加コードレイヤ、ViewModel、Model と ViewModel のデータメンバ間の同期などに対応するコードが必要なためです。DataSource を使用すると、ライブビューを ViewModel として使用でき、同期コードを書く手間が不要になります。ライブビューはソースと自動的に同期され、他の方法よりも作成が非常に簡単です。C1DataSource は、任意の MVVM フレームワークと組み合わせて使用することができます。
- 仮想モードによる大規模なデータセットの操作
C1DataSource の仮想モードを使用して、無制限に大規模なデータセットを操作できます。仮想モードにより、大規模なデータセットを非同期に操作することができます。仮想モードは、データレイヤでのページングと同様に機能しますが、ユーザーは、すべての行がクライアント上にあるかのようにデータをスクロールすることができます。ユーザーがスクロールを行うと、データチャンクが必要に応じてソースからページごとに取得、破棄されます。仮想モードは、DataGrid、C1FlexGrid などの GUI コントロール、または任意のコントロールで使用できます。データを変更することもできます。この機能は開発者にとって透過的であり、仮想モードは1つの単純なプロパティを設定するだけで有効にできます。
- データ変更を伴うページング
ページングインタフェースを使用するアプリケーションのために、C1DataSource は、データ変更に制限のないページングもサポートしています。つまり、ユーザーは、データベースに変更を送信する前に、1つのセッションで複数のページに変更を加えることができます。これは、Microsoft RIA サービスの DomainDataSource が備えているような他のページングの実装よりはるかに優れています。ページング機能が提供されていない WinForms では、C1DataSource を使用してページングを行うことができます。
- 高性能なクライアント側キャッシュ
DataSource for Entity Framework のほとんどの機能で、組み込みのクライアント側データキャッシュが重要な役割を果たしています。 C1DataSource は、エンティティのキャッシュをクライアント上に保持します。新しいクエリーが実行される場合でも、必ずしもサーバーにはアクセスしません。この場合は、最初にクライアント側のキャッシュを確認します。キャッシュに結果が見つかった場合、サーバーにはアクセスしません。サーバーとのやり取りを最小限に抑えることで、パフォーマンスと速度が劇的に向上しました。
- コンテキストの管理
C1DataSource を使用すると、アプリケーション全体で1つのデータコンテキストを使用することができます。このため、複数のビューにまたがる複数のコンテキストに対してプログラミングを行う煩わしさから解放されます。C1DataSource がないと、別のコンテキストからエンティティを同時に使用する必要がある場合に、複数のコンテキストを想定する必要があるため、コードを記述することが非常に難しくなります。クライアント側の優れたキャッシュ機能により、この機能が実現されました。
- メモリ管理
C1DataSource は、パフォーマンスとメモリ消費の両方について最適化されています。メモリリークを防ぐため、必要に応じてキャッシュにある古いエンティティオブジェクトが自動的に解放され、メモリリソースが管理されます。このとき、必要なエンティティとユーザーによって変更されたエンティティが維持されるので、データの一貫性が保持されます。
- サーバー側のフィルタ処理
ネットワークを介して大容量のデータが移動し、クライアント側でメモリが大量に消費されることを避けるため、通常、サーバーからクライアントに提供するデータは、何らかの方法でフィルタ処理または制限する必要があります。C1DataSource では、この一般的なタスクを簡単に実行することができます。つまり、コードを使用して手作業で実行する代わりに、C1DataSource で単純なプロパティ設定を行うだけで、サーバー側のフィルタ処理を指定できます。
- クライアント側トランザクション
DataSource for Entity Framework には、サーバーを介すことなく、クライアント側で変更をロールバック(キャンセル)したり受け入れたりすることができる、開発者向けの単純かつ強力なメカニズムが用意されています。C1DataSource を使用すると、モーダルでもモードレスでも、ネストされた(子)ダイアログボックスやフォームを含む任意の場所に、[キャンセル/元に戻す]ボタンや[OK/保存]ボタンを簡単に実装することができます。
- 変更済みデータの保存
C1DataSource の優れたクライアントキャッシュ機能により、変更済みデータをサーバーに保存するためのコードを簡単に記述することができます。コードを1行記述してサーバーに一度移動するだけで、複数のエンティティを保存することができます。手間のかかる作業がすべて DataSource によって実行されます。変更されたエンティティがキャッシュに保存され、キャッシュの一貫性が常に維持されると共に、メモリ消費量やパフォーマンスが最適化されます。
- 設計時のコードファーストのサポート
C1DataSource は、コードをモデルから生成しないコードファーストのシナリオでも使用できます。C1DataSource の "ライブ" 機能が必要な場合は、エンティティクラスで INotifyPropertyChanged インタフェースを実装します。また、それらのクラスにコレクションナビゲーションプロパティがある場合は、ObservableCollection インタフェースを使用します。
- クロスプラットフォームのサポート
DataSource for Entity Framework には C1DataSource コンポーネントが含まれています。これにより、Entity Framework や RIA サービスを使用して、複数のクライアントビューソースを組み合わせることができます。C1DataSource は、WinForms(.NET 4.5 以上)、WPF、および Silverlight 4 でサポートされています。