C#2.0時代のゲームプログラミング(34)
■ ゲームとデータベースとの関係
ゲームと言えども、規模が大きくなるにつれ何らかのデータベースの実装を利用したくなる。SQLiteやMySQLを利用することは日常茶飯事だ。
先日、C#からお手軽にMySQLにアクセスしたかったので、ODBCのwrapperとO/Rマッパーを作った。
■ カスタム属性によるO/Rマッピング
カスタム属性を用いて、自動的に「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自体を何らかの補助によって効率的に組み立ててしまおうというアプローチも採られることが多い。