これまで、私は ORM を避け、パラメータ化されたクエリなどを常に手作りしてきました。これは非常に時間がかかり、最初にアプリケーションを開発するときは本当に苦痛です。最近、ORM、特に Sqlite.NET ORM をもう一度見てみることにしました。
SQLite ORM 機能を使用したいのですが、ネイティブ SQL コマンドのバッチを実行してデータベースに事前入力することもできます。
SqliteNetExtensions-MvvmCross dll を使用して 1 対多の関係などを有効にしていますが、これはすべて問題ないようです。私の問題は、データベースに構成データをシードしたいときに発生します。次々と実行される一連の sql ステートメントを含む sql ファイルを単純に提供することを望んでいました。
GitHub から SQlite.NET コードを取得し、テストを実行しました。次に、単純な [Product] テーブルを持つ StringQueryTests クラスを拡張して、次のことを行いました。
[Test]
public void AlanTest()
{
StringBuilder sb = new StringBuilder(200);
sb.Append(" DELETE FROM Product;");
sb.Append(" INSERT INTO Product VALUES (1,\"Name1\",1,1);");
sb.Append(" INSERT INTO Product VALUES (2,\"Name2\",2,3);");
db.Execute(sb.ToString());
}
これを実行してもエラーは発生せず、実際には最初のコマンドのみが実行されるようです。sb.ToString() の内容を sqlite データベース クエリ ウィンドウに貼り付けると、問題なく動作します。
これは予想される動作ですか?もしそうなら、上記のようなアプローチを使用できるように、これを克服するにはどうすればよいですか。可能であれば、すべての SQL ステートメントを管理するためにオブジェクトを作成する必要はありません。
この問題を克服するために採用できるアプローチがいくつかあることがわかります。この問題を解決できると思われる回避策や提案はありますか?
敬具
アラン。