ドキュメントの補足 その1

動機は書き終わったのでドキュメントでは説明しきれないところなどを書いていこうかと思います

その1としてますが1だけで終わるかもしれませんw

名前

ソースコード中にも明記してますし、ドキュメントにも書いていますが
EasySqlParser内部のコードはDOMAの移植となっています

ならDOMA.NetとかnDOMAとかにしとくのがセオリーかもしれませんが、最初からDOMAを移植しようと思ったわけではありません

最初はパース処理を正規表現を駆使して、独自に書いていましたが、テストをしているとどうも遅いような気になって試しにDOMAを移植してみようかなと思って移植してみたら倍くらい速度が違いましたww

DOMAは1文字ずつ読み取っているから遅いんじゃないの?と高を括っていたのですがそんなことはなかった
10年くらい歴史があり、ググってたくさん情報が出てくるだけのことはあります

ちなみにEasySqlParserは最初から名前を決めていました
nugetを検索しても同じものが見つからないことを確認しながら…

また、DaoにもDomainにもマッピングのどれとも無関係なためDOMA.NetとかnDOMAと名付けるとか理解不能、理解不能(しげちー風)

マッピングとかせずに「単純にSQLをパースする」だけなのでそのまま名付けてEasySqlParserです1

なぜマッピングしないのにDB種別とか気にする必要があるのか

これはページングの際に必要だからです

ページングでは単一のSQLファイルからカウント文とデータ取得文を内部で生成しています
これ自体はDOMAパクリ移植です

ページングのSQLOFFSETLIMIT だったり、ROW_NUMBER だったりとDBによってかなり違います

これを実現するためにDBが何なのかの情報が必要になってくるわけです

しかし、つい最近ようやくMySQLROW_NUMBER がサポートされて、メジャーRDB(Microsoft SQL Server,Oracle,Db2,PostgreSQL,MySql,SQLite)すべてで ROW_NUMBER がサポートされました2
そこでEasySqlParserではオリジナルの機能として、DBの種別を無視してこの ROW_NUMBER を使用してデータ取得文を生成するようなオプションを用意しました

ドキュメントにもあるようにこのオプションを使用することでView層での行番号表示が容易に実現できます

これはサンプルアプリでも確認ができます


  1. nugetで同じ名前があったら別名になってましたが

  2. 他にもRDBはありますが気にしない