ORMのアイデア
特に関連エンティティをそのままマップする場合。
- リフレクションを使う
- delegate void setEntity(object entity); を使う
リフレクションを使う
遅そう。件数増えると致命的
delegate void setEntity(object entity); を使う
マップメソッドを関連エンティティに対して用意する必要がある。
generics 使いたいけど 実行時までタイプが分からないので書けない。
いや、もっと進めよう
delegate void mapEntity(DataRow row); を使う
rowから関連エンティティにマップし、自身のフィールドにセットする。
class Hoge : Entity{ int field1; int field2; string field3; Huga huga; public override void map(DataRow row){ field1 = row["field1"]; field2 = row["field2"]; field3 = row["field3"]; } public static void mapHuga(Hoge hoge,DataRow row){ Huga h = new Huga(); h.map(row); if(!h.isEmpty()){ hoge.huga = h; } } } class Mapper{ public delegate void mapEntity(DataRow row); delegate mapEntity mapAssociation; public Hoge map(DataSet dataset){ Hoge hoge = new Hoge(); hoge.map(dataset.Tables[0].Rows[0]); mapAssotiato(hoge,dataset.Tables[0].Rows[0]); } }