じょーログ(C#,Xamarin,Unity)

主はC#,Xamarin,Unity、後は思った事を綴る

.NetでのO/Rマッピングについて 型無しDataSetについて

そもそもO/Rマッピングってなんだってことだけども、

要約するとDBの項目と.netのオブジェクトをマッピングすること。
.netが持っている型とDBが持っている型をあわせよー!みたいな発想を偉い人がした。
これ毎度するのだるくね。。。機械的にしちゃおーぜ!
って事で昔から行われてきた。

で、めんどくさいことにそのO/Rマッピングについて、.netではバージョンアップするにつれて色々方法が変わってきた。

.Net1.1時代ではまずDataSetという概念が出てきた。
DataSetは.net上で扱うデータベースとイメージするとわかりやすい。
保存方法としては、DBはハードディスクに対し、DataSetはメモリ上に展開される。

Datasetの中にはTablesというプロパティがある。
TablesにはDataTableの配列が含まれており、これはDB上でのテーブルに該当する。
またTablesという事でテーブル群の取得となるため、指定したテーブルを取得するにはDataSet.Tables[0]といった形で取得する。
取得できる型はDataTable型。

次にTableの中にはRowsがある。これもTablesと同様であり、DataSet.Tables[0].Rows[0]という形で取得することができる。
取得できる型はDataRow型。

最後に、行を特定したので列を指定すれば目的の値を取得できるわけだが、方法としては、Rows[0]["Coulum1"]と文字列指定かRows[0][0]のIndex指定で値を取得できる。
取得した値の型は一律String型となる。

見るからにだるいね。

そこで型ありDataSetってのが.net2.0から出てきた。
かるーく説明すると、、、


SampleDataTable
SampleDataRow

いきなり変なのが出てきたけど、上記が型ありDataSetと呼ばれているもの。
SampleDataTableはDataTableを継承し、SampleDataRowはDataRowを継承してる。

すると値を取得しようとした時、SampleDataRow.Sampleみたいな感じで値を取得することができる。
しかも、取得した値の型はDB定義した際の方と同じである。

そもそも、
SampleDataTable
SampleDataRow
をどうやって作るの?って話なんだけども、それはまた長くなるので機会があるときに説明するかなぁ。