Model と ModelTest という 2 つの C# プロジェクトがあります。モデルは ActiveRecord オブジェクト (Hibernate のラッパー) で構成されます。ModelTest で、単純な単体テストを作成しました。
[TestClass]
public class UnitTest1
{
[TestInitialize]
public void Init()
{
Model.Init();
Model.CreateSchema();
}
[TestMethod]
public void TestMethod1()
{
}
}
Model.Init() は、アセンブリ Model のすべてのタイプを ActiveRecord に登録します。Model.CreateSchema() は、NHibernate の CreateSchema() を呼び出す ActiveRecordStarter.CreateSchema() をラップします。
このコードは、単体テストを実行すると正常に動作しますが、単体テストを「デバッグ」すると失敗します。デバッグ モードでは、CreateSchema() で例外が発生します。
NpgsqlException: 'ERROR: 42P01: table "user" does not exist'
テストを実行する前にデータベースが空の場合、SQL呼び出し「テーブルユーザーカスケードのドロップ」中に例外が発生したようです。新しいテーブルを作成する前に、常にドロップが送信されると想定しています。
ドロップクエリの結果に関して、Npgsql はデバッグモードで異なる動作をしますか?