Fluent NHibernate 1.3.0.727 および NHibernate 3.3.0.4000 を使用して、プロパティをデータベースの列にマップします。以下は、ClassMap の 1 つの簡略化されたサンプルです。
public class TankMap : ClassMap<Tank>
{
public TankMap()
{
Id(o => o.Id);
Map(o => o.TankSystem);
}
}
この場合、TankSystem プロパティはstringです。
アプリケーションの一部には、マップされたプロパティ (TankSystem など) に何度もアクセスすることを伴う多くの計算があります。アプリケーションをプロファイリングするとき、これらのプロパティにアクセスするだけでもかなりの時間がかかります。これは、アクセスするたびに NHibernate.Proxy.DefaultLazyInitializer.Intercept メソッドを経由する必要があるためです。
計算をできるだけ高速にする必要があり、このプロキシのオーバーヘッドを回避したいと考えています。1 つのアプローチは、必要なプロパティ (TankSystem など) を配列にコピーし、この情報にアクセスしたいときにいつでも配列を使用することですが、これはあまりオブジェクト指向のアプローチではありません。
アップデート:
たとえば、次のように、Not.LazyLoad を使用してプロパティのマッピングを試みました。
Map(o => o.TankSystem).Not.LazyLoad();
ただし、これは、このプロパティが実際にプロキシされているかどうかには影響しないようです。
このプロキシのオーバーヘッドを回避/削減するオプションはありますか?