私はドライバーを作成しようとしていますlinqpad
が、質問があります:
作成するときはDynamicDataContextDriver
、クラスを作成する必要がありますTypedDataContext
。
- 何を入れたらいいの?
- どのように入力されますか?
- 設定方法を制御できますか?
- ここでオブジェクトデータベースを使用する場合、注意しなければならないことがありますか?
ここでいくつかの答えを見つけましたが、上記のすべての答えを見つけることができません。
型付きデータコンテキストは、クエリに適したプロパティ/フィールドを持つクラスです。これらのプロパティ/フィールドは通常、IEnumerablesまたはIQueryablesを返します。例えば:
public class TypedDataContext
{
public IEnumerable<Customer> Customers { get { ... } }
public IEnumerable<Order> Orders { get { ... } }
...
}
Visual Studioを使用して「LINQtoSQLクラス」または「ADO.NETエンティティデータモデル」のような新しいアイテムを作成すると、Visual Studioは、LINQPadが期待するものの優れた例である型付きデータコンテキストを作成します。型指定されたデータコンテキストは、メソッドを公開することもできます(たとえば、ストアドプロシージャまたは関数をマップするため)。実際、エンドユーザーにとって意味のあるものはすべて公開できます。
接続のあるLINQPadでクエリを実行すると、LINQPadは接続に関連付けられた型付きデータコンテキストをサブクラス化して、クエリがそのすべてのフィールド/プロパティにアクセスできるようにします。Customers.Dump()
これが有効なクエリである理由ですCustomers
。最初に型指定されたデータコンテキストをインスタンス化することなく、アクセスすることができます。
LINQPadドライバーは、2つの方法のいずれかで機能します。Visual Studioのように機能し、型付きデータコンテキストを自動的にオンザフライで構築するか(動的データコンテキストドライバー)、ユーザーが提供する既存のアセンブリから型付きデータコンテキストを抽出する(静的データコンテキストドライバー)ことができます。LINQPadで接続を追加すると、ドライバーが2つのリストボックスに表示されます(データコンテキストを自動的にビルドする=動的ドライバー、および独自のアセンブリから型指定されたデータコンテキストを使用する=静的ドライバー)。
型指定されたデータコンテキストは、クエリが実行されるたびにインスタンス化されます。そのプロパティは通常、遅延評価されたIEnumerables / IQueryablesを返すため、「入力」することを考えると役に立ちません。ただし、基になるデータソースにアクセスする方法を知る必要があります。これは、コンストラクターに引数を渡すことによって行われます。
LINQPadは通常、クエリの実行間でクエリのアプリケーションドメインを存続させます。これは、オブジェクトデータベースのドライバーを作成する場合に、キャッシュと最適化に役立つ場合があります。それ以外は、オブジェクトデータベースに関して特別な考慮事項はありません。