2011-02-08 17 views
0

私は無効Fluent NHibernate遅延ロード機能をグローバルにしようとしていますが、それでも後:C#流暢NHibernateの質問

NHibernate.InvalidProxyTypeException: 
The following types may not be used as proxies: 

XXXX: method YYYY should be 'public/protected virtual' 
     or 'protected internal virtual' 

I:私のテストコードで

LazyLoad.Never(); 
DefaultLazy.Never(); 

NHibernate次のことを言って続けレイジーローディングを無効にした場合、クラスの任意のメソッドを仮想クラスとしてマークしたくありません。これには解決策があるのでしょうか、あるいは私は何か間違っていますか?

+0

同じ問題に関するこの記事会談http://stackoverflow.com/questions/2278110/nhibernate-exception-method-add-should-be-public-protected-virtual:いくつかの光読書のために

または保護する – Divi

答えて

2

Lazyローディングをオフにすると、Nhibernateは、データベースから人物を取得するとすぐに、すべての関連プロパティ(たとえば、 - PersonクラスにCar関連付けプロパティがあります)を取得しようとします。

carプロパティを設定するにはNhibernateはpersonクラスを継承し、Carparkプロパティをオーバーライドすることによってpersonクラスのプロキシを作成します。

もし車のプロパティが仮想ではない場合、NhibernateはLazy Loadingがオンになっているかどうかを確認し、プロパティの読み込みをエスケープすることができます。ただし、アプリでは例外ではありません。 http://davybrion.com/blog/2009/03/must-everything-be-virtual-with-nhibernate/

関連する問題