私は、Linqクエリの書き込みがSQLとMS Accessデータベースでも実行できると聞いています。それは間違っていますか?複数のRDBMSタイプを持つLinq
たとえば、現在私はMS Accessデータベースを使用していますが、その後SQL Serverに移行する場合はクエリを変更したくない場合など、データベースの種類に関係なく一度クエリを書きます。これは可能ですか?
私は、Linqクエリの書き込みがSQLとMS Accessデータベースでも実行できると聞いています。それは間違っていますか?複数のRDBMSタイプを持つLinq
たとえば、現在私はMS Accessデータベースを使用していますが、その後SQL Serverに移行する場合はクエリを変更したくない場合など、データベースの種類に関係なく一度クエリを書きます。これは可能ですか?
クエリによっては部分的に異なります。 簡略のクエリ(select、where、orderby)には問題ありませんが、実装固有の詳細がたくさんあります。
たとえば:あなたは明示的には、注文していないセットにFirst
を取っ
Expression.Invoke
にを使用して.FirstOrDefault(predicate)
対.Where(predicate).FirstOrDefault()
周りにいくつかのシナリオ - 意味的に同じですが、IIRC(アストリア)唯一の作品私のポイントがあります。それはかもしれませんが動作しますが、特定の実装に対してテストする必要があります。
LINQ-to-SQLはSQLサーバーでのみ動作します。オブジェクトへのLinqはほとんどのコレクションで動作しますが、遅延実行は失われます。
Entity Frameworkを使用している場合、さまざまなデータソースのプロバイダをいくつか検索して購入できます。
エンティティコンテキストで十分な抽象化が得られるとすぐに、任意のLINQ構造を使用してクエリを構築できます。ただし、すべてのプロバイダーが同じ演算子と関数をサポートするわけではありません。 DBMSの変更中も、完全なアプリケーションをテストする必要があります。
基本的には、Linq to Objectsを使用して任意のデータセットで作業できます。
ロジックを保存したい場合は、具体的に - Devart LinqConnectを使用することをおすすめします。
また、given articleでOracleとMS SQLの同時使用の詳細を読むことができます。 LinqConnectのアプローチも同じです。
SQL ServerとSQL CEの両方で、同じアセンブリを問題なく使用しています。つまり、生成されたコードを多少調整しなければならず、SQL CEで利用できるもの(ビューがない、ストアドプロシージャーがない、関数がないなど)に制限する必要がありました。 – leppie