C#2.0時代のゲームプログラミング(34)

■ ゲームとデータベースとの関係


ゲームと言えども、規模が大きくなるにつれ何らかのデータベースの実装を利用したくなる。SQLiteMySQLを利用することは日常茶飯事だ。


先日、C#からお手軽にMySQLにアクセスしたかったので、ODBCのwrapperとO/Rマッパーを作った。


■ カスタム属性によるO/Rマッピング
プログラマのためのSQL 第2版


カスタム属性を用いて、自動的に「CREATE TABLE」文を生成するサンプルをmeiさんが書いている。
http://d.hatena.ne.jp/akiramei/20040527


DLINQが出てくるまでの繋ぎの意味も強いと思うが、O/Rマッピングにはそれなりの価値があるので私も簡単なO/Rのクラスを書いてみた。


今日リリースしたYanesdk.NET version 1.21には、ODBCのwrapperおよびO/Rのテスト用のクラスがある。O/Rの過程で“'”などのquotingを出来るのでSQL injectionなどの対策にもなる。興味のある方は、ご覧いただきたい。


■ 部分集合型


しかし、DBのレコードを部分的にO/Rしてくることが多いので、実際は部分集合型が欲しくなる。これについては、C#で部分集合型を実現するのアイデアを考えている。


まあ、もっとも、SQLを用いる場合は、DBからいったんO/Rでオブジェクトにmapさせて変更後に書き戻すというよりはupdate文一発で書けるかどうかが問題になることのほうが多いので、SQL経由である限りはO/Rにあまり価値はないような気もしている。


■ SQL Queryの組み立て


SQLのインテリセンス など、SQL Query自体を何らかの補助によって効率的に組み立ててしまおうというアプローチも採られることが多い。


今後、DBがSQL主導からオブジェクト指向型のDBにシフトしていくことになるのか、そのへんは興味深いところである。