質問

Linqの世界は初めてで、現在調査中です。データベースの相互作用を含む次のプロジェクトで使用することを考えています。

私が読んだものは何であれ、データベースと対話するには2つの異なる方法があると思います:

  • Linq to SQL
  • Linq to DataSet

今私が取り組んでいる製品は、データベースのタイプに依存できません。たとえば、SQLサーバー/ Oracleで展開される可能性があります。

今、私の質問は:

  1. Linq to SQLを使用している場合、SQLサーバーのみで行き詰まっていますか?
  2. Linq to DataSetをSQLサーバーとOracleの両方に使用できると思います。しかし、Linq to SQLサーバー用のLinqを使用すると(Linq to SQLオフコースと比較して)何か(プログラミング、パフォーマンス、信頼性など)が失われます。
役に立ちましたか?

解決

#1については正しい-Linq to SqlはSQL Serverデータベースに対してのみ機能します。

(異なるプロバイダーを使用して)異なるデータソースにアクセスする機能が必要な場合は、ADO Entity Frameworkを使用します。 POCOのようなエンティティを使用するという点でも同様の柔軟性が得られ、より高度な/複雑な実装に拡張するのは非常に簡単です。

現在のプロジェクトでは、Linq to Sqlを使用していますが、問題ありませんでしたが、克服すべき多くの問題がありました。拡張性の観点からは、あまりにも単純すぎることがあります。 Linq to SqlおよびEntity Framework こちら

質問#2に関して-DataSetsに戻りたいかどうかわかりません。私見は過去のものですが、特定のコントロール(Infragisticsなど)を備えた適切なツールキットがある場合に役立ちます。ただし、高速トランザクションシステムにはオーバーヘッドが高すぎると感じています。実装には、Linq to SqlまたはEntity Frameworkの機能の半分はありません。

他のヒント

最初の質問に答えるには:いいえ、たとえばoracle用のlinqプロバイダーには他にも実装があります。たとえば:

LinqToOracle

DbLinq

後者は、SqLiteなどのより多くのデータベースをサポートします。

ADO.NET Entity Framework

  1. はい、SQL Serverのみです。さらに、MicrosoftはL2Sを凍結しており、L2Sをさらに改良することはありません。しかし、それは優れたフレームワークであり、非常によく機能し、使いやすいです。
  2. Linq to DataSetは、データがDBからフェッチされた後、列挙可能データセットとしてデータセットにアクセスします。 Linq to SQLはIQueriableを使用して実際に動的SQLクエリを構築します。多くの場合、L2Sははるかに優れたパフォーマンスを発揮し、DBコードをまったく記述しなくて済みます。

Linq to Entitiesを調べる必要があります。それは、利用可能な最も本格的なフレームワークです。現時点では、主にSQL Server向けですが、やがてOracleなどのサポートを受けることになります。

  1. SQLサーバーだけにこだわるわけではありません。理論的には、任意のデータベースのlinqプロバイダーを構築できます。 Linq to Oracle http://www.codeplex.com/LinqToOracle のcodeplexにプロジェクトがあります。自分で試したことはありません。

  2. どのようにしてデータをデータセットに入れますか?テーブル全体をデータセットにフェッチするとは思わないでしょうか?それは深刻なパフォーマンスの問題になります。 Linqを使用してデータセットを作成する場合は、linqにsqlクエリを作成させるのではなく、データベースからデータを取得するためにすべてのSQLクエリを自分で記述する必要があります。したがって、実際には最初にデータベースを照会し、次にデータセットを照会する必要があります。私には二重の仕事のようです...

Linq to SQLを使用する場合、私が知る限り、SQL Serverにかなりこだわるでしょう。

LinqをDataSetに使用すると、プログラミングが少し楽になります。Linqでは、Linqエンティティを直接使用できますが、DataSetでは、DataSet名(MyDataSet.Entity = new MyDataSet .Entity())、しばらくすると古くなります。それが唯一の犠牲だと思います。

ただし、たとえばOracle(プロジェクトでそれをしました)。また、DataAdapterをもう少し制御してドラッグアンドドロップすることもできます(私が知っている限り-Linq-to-SQLをそれほど微調整する必要はありませんでした)。使用するクエリを指定できます(例)など。

DataSet内のテーブル間の関係を定義できるため、Linqを十分に使用できるため、実際に問題が発生することはありません。

Linq-to-DataSetの信頼性はLinq-to-SQLのそれと同じくらい良好で(問題はありませんでした)、パフォーマンスは十分に良いと思われ、実際にプロファイルすることはできませんでした。

SQL Serverだけにこだわるわけではありません。 Oracle、MySQL、PostgreSQL、およびSQLiteサーバー向けのLINQ to SQL実装を提供しています。 詳細については、こちらをご覧ください DataSetsは、LINQ to SQLテクノロジーと比較するとそれほど便利ではありません。 代わりにEntity Frameworkオプションを確認してください。 1つの概念モデルで複数のストレージモデルを記述し、SQL ServerとOracleデータベースを並行して使用できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top