.NET

簡易ORMフレームワークを作成してみる(10)

SQL文自動生成 型指定されたDataSetからSQL文の作成する際のポイントは、個別のDBMSの機能をどのようにして外だしするかです。今回はDbProviderAdapterでカラムやテーブル名のスケープ処理やRDBMS固有の関数名を隠居しています。微妙な違いはサブクラス化し…

簡易ORMフレームワークを作成してみる(9)

SQL文自動生成 前回の続きで、型指定されたDataSetの情報からSQL文を作成するクラスライブラリについて整理していきます。まずは、全体のクラス構成から見てみましょう。SQL文の生成の中心的なクラスはDataCommandBuilderクラスです。GetSelectCommandやGetD…

簡易ORMフレームワークを作成してみる(8)

CRUD SQL文の生成 型指定されたDataSetにはテーブルに関する情報が豊富に保持されています。テーブル名、カラム名、プライマリキーなどなど。これらの情報を利用すると簡単に決まりきった検索・更新などのSQL文を作成することができます。たとえば、SELECT文…

簡易ORMフレームワークを作成してみる(7)

ソートと範囲指定 個々の検索条件アイテムはある程度作成できたので、次はソート条件と何件目から何件取得するかかの範囲指定の条件を指定できるようにします。目標のシナリオは以下のようになります。QueryObjectにソート条件を追加できるようにします。 [T…

簡易ORMフレームワークを作成してみる(6)

AND,OR,NOTの追加 次の目標のシナリオはAND、OR、NOTの論理演算が利用できるようにします。 AND、OR、NOTは構成に要素に他の検索条件すなわちCriteriaを持つようになります。FilterCriteriaの構成要素では単純なパラメータしか表現できなため、これらを表現…

簡易ORMフレームワークを作成してみる(5)

検索バリエーションの追加 等号をシナリオが完成できたので、更にいろいろバリエーションを増やしていきます。ということで次に実現するシナリオを決定しましょう。等号の次といえばたはり不等号でしょうか。 [Test] public void 不等号() { QueryObject qo …

簡易ORMフレームワークを作成してみる(4)

SQL文の生成 QueryObjectから実際のSQL文を生成する基本的には責務はQueryObjectBuilderがもちます。 ただ、今回はCriteriaもRDBMSに依存しない範囲でフィルタ条件などの生成責務をもつようにすることでCriteriaの一般化と単純化を狙うようにします。なお、…

簡易ORMフレームワークを作成してみる(3)

等号フィルタの作成 基本的な構造が出来上がったのであとはバリエーションを増やしていくだけです。 まずは、最初のシナリオを実現するための等号フィルタの作成に取り掛かります。 EqCriteriaみたいな等号フィルタを作ることももちろん可能できすが、同じよ…

簡易ORMフレームワークを作成してみる(2)

検索条件構築クラス(QueryObject) まずは、検索条件構築クラスを作成していきたいと思います。 この検索条件クラスを導入するメリットは、データアクセスクラスの汎用化を進めてくれます。 データアクセスの条件をデータアクセスを行うメソッドの引数で表現…

簡易ORMフレームワークを作成してみる(1)

.NETの型指定されたDataSetをメタデータとしてORマッピングできる簡易フレームワークを作成してみる。 あまり複雑なことはしないで、できるだけシンプルなものにする予定だ。まず、最初のシナリオは以下のようなものをターゲットにしてみる。 [Test] public …

WF・LINQをどのように利用していくか

もう少しすると、WFやLINQなどの新しいテクノロジが利用できるようになる。 技術屋としては興味が惹かれるが、どのようにLOBアプリに適用していくか、斬新なアイデアが思いつかない。 (D)LINQにORM以上のこと、WFにビジネスワークフロー以上のことを求めては…

Windows Formの検証機能

Windows Formの検証機能は2.0で大幅に強化されそれなりに実用的になっている。 しかし、案外癖があって???状態になることも多い。 以前部分的に書いたことがあったのだが、利用上のポイントを簡単にまとめてみたい。 Validatingイベント 最初にWindows Fo…

型指定されたDataSetでビジネスルールの実装

前のトピックで単一継承ではビジネスルールの実装は力不足という点を指摘した。 これは、型指定されたDataSetの場合Partialクラスを利用してもドメインオブジェクトの同士の継承関係を実装することできないデメリットもビジネスルールを実装する観点ではそれ…

関心事に分離したドメインモデルを型指定されたDataSetで作成する

テーブルモジュールで作成する場合に型指定されたDataSetを使うが、型指定されたDataSetにドメインロジックを追加することでドメインモデルに近づけられる。このパターンのメリットはテーブルモジュールからドメインモデルに連続的に発展できるので、簡単な…

型指定されたDataSetを利用したドメインモデル

.NET2.0で型指定されたDataSetにPartialクラスで拡張できるのを利用してドメインロジックを型指定されたDataSetに追加することができる。 以前外部メソッド(Foreign Method)で実装していたが、これに比べて少し変わる程度かなと思っていたが、直感的ですご…

コードの自動生成

最近ではRonR、DSL、古くは4GLなどコードの自動生成を行って開発速度を上げようとする試みは多い。 実際どの程度役立つかはケースバイケースだが、良く似たパターンを大量生産する場合に利用できると効果が大きい。Visual Studioにも様々な自動生成を支援す…

DTOとDataSet

P&Pにも、もちろんDTOとDataSetの話は出ています。データ転送オブジェクト

関心事に分離されたドメインモデルの実装

以前、ドメインモデルサンプルで実装したプログラムが、関心事に分離されたドメインモデルでの実装になっています。これは.NET1.1で作成されたものですが、.NET2.0であればGenericsやPartialクラスを使うとだいぶコードが減るんでしょうね

プレゼンテーションモデル

最近良く利用するパターン。 ASP.NET2.0で双方向バインドできるので、プレゼンテーションモデルを作成して組み合わせるとコントロールのプロパティに設定・取得するコードが必要なくなりすっきりします。 プレゼンテーションモデル自体は、多くの場合(簡単…

抽象クラスとインターフェイスの使い分け

MSDNには非常に多くのことがかかれていて、単なるリファレンスだけではなく、より一般的な知識を提供してくれる点もおおいたとえば、抽象クラスとインターフェイスに関する推奨事項では以下のような内容が記述されています。 コンポーネントの複数のバージョ…

タイトルだけで即予約注文した。

Applying Domain-Driven Design and Patterns: With Examples in C# and .NET作者: Jimmy Nilsson出版社/メーカー: Addison-Wesley Professional発売日: 2006/05/08メディア: ハードカバー購入: 1人 クリック: 4回この商品を含むブログ (8件) を見る

StreamWriterとFile.CreateTextで作成されるファイルの違い

StreamWriterでUTF-8でエンコードされたファイルを作成する場合とFile.CreateTextでファイルを作成する場合、どちらもUTF-8で作成されます。・StreamWriter(filename, false, System.Text.Encoding.UTF8)・File.CreateText(filename)でも、1つ違うところが…

なぜ、Double.Parse(Double.MaxValue.ToString())は動かないか?

doubleはそもそも浮動小数点なのでToString()すなわち10進で表現した時点で丸目が発生する。このため、Parseで戻せない可能性がある。 これを回避するためにはrオプションを使って、Double.Parse(Double.MaxValue.ToString("r"))すればOKです。こんなのこと…