私は、既存の機能的なアプリケーションに存在するNHibernateマッピングの大規模なセットを継承しました。このアプリケーションを分岐していくつかの新機能を開発しましたが、その一方で、よりTDDのようなアプローチを可能にするためにテストインフラストラクチャも拡張しています。しかし今、私は統合テストの1つで壁にぶつかりました...
統合テストの前に挿入するテストデータを含むクラスがあります。これらを挿入するメソッドでは、次の例外が発生します。
NHibernate.PropertyAccessException:無効なキャスト(プロパティタイプの不一致についてマッピングを確認してください); Domain.Entities.Projectのセッター--->System.InvalidCastException:タイプ「System.Object」のオブジェクトをタイプ「Domain.Entities.ProjectModules」にキャストできません。
理由がわかりません。セットアップ時にデータベースに永続化しようとする2つのProject
インスタンスがあり、どちらも次のように定義されています。
new Project("2023", "projeName", "projaddr")
{
PrincipalOwner = UserOne, // UserOne and Office are other properties
Office = Office,
// I've tried just not instantiating this too - gave the same exception
ProjectModules = new ProjectModules
{
HasModuleOne = false,
HasModuleTwo = false
});
});
Fluent NHibernateマッピング(の関連部分)は次のようになります。
Component(m => m.ProjectModules, c =>
{
c.LazyLoad();
c.Map(x => x.HasModuleOne)
.Column("ModuleOne").Not.Nullable().Default("0");
c.Map(x => x.HasModuleTwo)
.Column("ModuleTwo").Not.Nullable().Default("0");
});