現在のデータレイヤーにLinqとSubsonicのどちらを選択しますか?
-
05-07-2019 - |
質問
レガシーコードを使用せずに、新しいプロジェクトを開始できます。過去にSubsonicを使用していましたが、とても満足しています。しかし、それはLinqの前でした。
これと同じ問題に直面しなければならない人はいますか(Linq x Subsonic)?
あなたの決断は何でしたか?理由は何ですか?
あらゆる洞察に感謝します。
解決
SubSonic
長所:
- 素敵でシンプルな
- 足場
短所:
- 多くの場合、メソッドシグネチャは文字列パラメーターを受け入れます(ただし、DAO文字列定数を使用することをお勧めします)。
留意点:
- コードなしのハンドオフモデル生成には、Webサイトプロジェクトが必要です(BuildProviderが必要です)。
Linq To SQL
長所:
- IDEの構文糖衣
- MSサポート
- IDEで実行されるSQLを表示します
- 自動生成からオブジェクトプロパティまでの明示的な定義まで、モデル内でさまざまなレベルの操作を許可します。
短所:
- 複雑。 DataContextのような新しい概念を効果的に学習する必要があります。
留意点:
- 一部のstackoverflowユーザー Linq to SQLの継続サポート。
他のヒント
LINQで気に入っている点の1つは、SubSonicが適切に処理するとは思わないが、自動的に結合を処理することです。
FROM a in db.Orders
where a.Total > 100
SELECT new {a.Item.Desc, a.Customer.Name};
thisLのようなSQLを自動的に生成します
select i.DESC, c.NAME
from ORDERS o
inner join ITEMS on o.ItemID = i.ItemID
inner join CUSTOMERS c on o.CustomerID = c.CUSTOMERID
where o.TOTAL > 100
NHibernateはどうですか?それは本当に新しいプロジェクトの見通し外ですか?それでも、Javaから来た人は使い慣れていると感じるでしょう。また、.NET 2.0とMonoでも使用できます。
Linqを使用したのは、フレームワークに組み込まれているためです。 Microsoftによってサポートされないだろうと言っている人のために...廃止されるのはLinqToSqlです。計画の1つは、それをEntity Frameworkに吸収することだと思います。
現在、Entity Frameworkを使用しています。また、linqを使用します。基本的には、linqToSqlとまったく同じであり、使用する場合は柔軟性とパワーが向上します。
サードパーティのフレームワークとオームは、最終的には消滅するため、避ける傾向があります。彼らの人生は、どれだけ多くの人々がそれに興味を持ち、それを利用しているからだからです。彼らの人生はまた、その主な著者/貢献者に大きく依存しています。
私の経験は、SubSonicを中心にしたものです。展開は非常に簡単で、DALは30分以内に完了します。これは実用性のために設計されているため、これはスイスアーミーナイフであることに留意してください。基本的に、テーブルごとに生成されたクラスと、コレクションの遅延読み込みを実行する機能を取得します。フレームワーク経由でストアドプロシージャを実行することもできます。そのため、複雑なデータ構造がある場合は、データベースからそれらをフェッチし、手作業で作成したクラスを更新できます。
5つの主要なプロジェクトでこれを使用しましたが、どれだけ早く依存していたかに感銘を受けました。
同じ状況でした。 LinQはより「視覚的」であり、vstudio内であらゆることを行います。ロブでさえ、subsonicにはそれに匹敵するものがいくつかあると認めています。
IEnumerable、LINQDatasource(自動ページングを使用)、およびビジュアルモデリングにより、SubsonicではなくLinqを選択するようになりました。
linq to sqlの最大のリスクは、Microsoftが飽きて放棄することです。これは既に発生しており、エンティティフレームワークのみが更新されるという多くの憶測があります。 Subsonicはこれに苦しむことはなく、さらに悪いことに、編集するソースコードがある場合もあります。
MSはLINQ to SQ Lの開発を停止しているようです。 SubSonicsの最新バージョンは、以前のバージョンよりもクエリの作成が簡単で読みやすくなります。