これには頭を悩ませているので、ここで別の目が助けてくれることを願っています。
設定:
すべてのデータ転送オブジェクトが使用する DomainEntity という基本クラスがあります。基本的に Id (整数) と呼ばれるプロパティのみを定義します。
データ転送オブジェクトがあります: ブログ、投稿、ユーザー DomainEntity は名前空間 Core.Domain にあり、データ転送オブジェクトは Core.Domain.Model の下にあります
次のセッション ビルダー コードがあります。
return Fluently.Configure()
.Database(SQLiteConfiguration.Standard.UsingFile("c:\blog.db"))
.Mappings(x => x.AutoMappings.Add(
AutoPersistenceModel.MapEntitiesFromAssemblyOf<Blog>()
.Where(type =>
type.Namespace.EndsWith("Domain.Model") &&
!type.IsAbstract &&
type.IsClass &&
type.GetProperty("Id") != null)
)).BuildSessionFactory();
単純なクエリをテストしようとすると、上記のコード (どこか) でアプリケーション例外が発生し、エラー メッセージは次のようになります。
System.ApplicationException: 'Core.Domain.DomainEntity' のマッピング ドキュメントの構築中にエラーが発生しました ---> NHibernate.MappingException: マッピング ドキュメントをコンパイルできませんでした: (XmlDocument) ---> System.IndexOutOfRangeException: インデックスが配列の境界。
私のコード/NHibernate が DomainEntity をマップしようとしているようですが、失敗しています。上記のコードは、type.Namespace.EndsWith("Domain.Model") を使用してそのオブジェクトをマップしないように明示的に述べていると思いました。あれは正しいですか?ここでどこに迷うのですか?
助けてくれてありがとう。