このQueryクラスを共有して、それについて考えてみたいです。 Queryクラスは、dbconnectionに対してクエリを実行するのに役立ちます。私は実装を含めていませんが、投稿するのはちょっとです。ここでは例の呼び出しだ、あなたのアイデアを得るでしょう:My Queryクラス。あなたの意見?
- ADO.NETコマンドコードを記述する必要はありません:
OrdersDataTable table = new Query(connection) .Table("Orders") .Fields("OrderID,CustomerID,Description,Amount") .GreaterThan("OrderID", 1000) .OrderBy("OrderID") .Execute<OrdersDataTable>();
ここで私はクラスを好きな理由です。このクラスを呼び出すと、ADO.NET equivilentより少ない行しか使用できません。
- 各メンバー関数はこれを返し、複数の呼び出しを一緒にチェーンすることができます。このパターンの名前があるかどうかはわかりません。あなたは知っていますか?
- MySql、OleDb、およびSqlServerの各方言を処理します。
- ADO.NETのequivilentよりも読みやすいと思われます。
- 呼び出しの順序は関係ありません。すべてのパラメータは内部コレクションにバッファされ、Executeが呼び出されると読み込まれます。
- 私のシナリオでは、複数のデータベース製品と通信する必要があります。そのため、一度だけ一般的な方法でクエリを作成し、所定の接続を渡したいとします。ストアドプロシージャのようなDB固有の機能を活用するのは大変な問題です。
私は、このクラスを内部的に使用するDALを持っています。 UIは、いくつかのクエリパラメータを渡してDALを呼び出し、DataTableが返されます。このクラスは、DAL実装のLOCを大幅に削減するとともに、読みやすくしました。
OrdersDataTable orders = Orders.GetByOrderId(1)
とのimpl:
public static OrdersDataTable GetByOrderId(int id)
{
return
new Query(connection)
.Table("Orders")
.Fields("OrderID,CustomerID,Description,Amount")
.Equals("OrderID", id)
.Execute<OrdersDataTable>();
}
おかげ
ここではサンプルDALコールがあります!
編集:すばらしいフィードバックをいただきありがとうございます。皆さんの多くがLinqToSqlを提案しました。 Microsoftは現在SQL Serverのみをサポートしているため、私はLinqを選択しませんでした。私は、Jet、MySqlとSQL Serverのテーブルを照会する必要があります。
誰かがAND句とOR句をどのように構築するか尋ねました。ここではそれはあなたがとても素敵な小さなORMを書いているように見える各
//and example
public static OrdersDataTable GetByOrderIdAndCustomerId(int orderId, int customerId)
{
return
new Query(connection)
.Table("Orders")
.Fields("OrderID,CustomerID,Description,Amount")
.Equals("OrderID", orderId)
.Equals("CustomerID", customerId)
.Execute<OrdersDataTable>();
}
//or example
public static OrdersDataTable GetByOrderIdOrCustomerId(int orderId, int customerId)
{
return
new Query(connection)
.Table("Orders")
.Fields("OrderID,CustomerID,Description,Amount")
.OrBegin
.Equals("OrderID", orderId)
.Equals("CustomerID", customerId)
.OrEnd
.Execute<OrdersDataTable>();
}
困ったことに... C#を使用している場合は、LINQの何が問題になっていますか? –
私はそれが好きです!もしあなたが私のようで、2.0で立ち往生したら、それはいいだろう。 –
私はそれが好きです。流暢なインターフェースドットスタイルが好きな人なら、Linqでもそうすることができます。 –