私はNHibernateを初めて使っていますが、私の最新プロジェクトではうまく動作しています。しかし、今、私はそれを解決するために抽象化を超えなければならない、必然的なパフォーマンスの問題に達しました。NHibernateの遅延ロードが自分のドメインで動作していないようですか?
私は長い時間がかかるメソッドを分離するためのnunitテストを作成しました。しかし、最初に私のドメインモデルの簡単な概要はおそらく良い考えです:
私は名前、番号などを含む 'プロジェクト'オブジェクトを持つオブジェクトである 'PmqccForm'を持って、それはまた、 '質問'オブジェクトは、さまざまな異なる' Question 'オブジェクトのプロパティを含むクラスです。 JobVelocityQuestionオブジェクトには、それ自身が回答といくつかの他のプロパティを持ち、同様の質問オブジェクトがたくさんあります。
キーポイントは、私は を入力できるようにしたいということです: これは私が私のPmqccFormが質問を持って話しているものです。これは、モデルの質問の一部である
オブジェクトform.Questions.JobVelocityQuestion
各PmqccFormのJobVelocityQuestionは常に正確に1つあり、他のすべての質問でも同じです。これらは、質問オブジェクトのC#プロパティであり、質問オブジェクトは単なる保持場所です。
今、私に問題を引き起こしている方法はこれです:
public IEnumerable<PmqccForm> GetPmqccFormsByUser(StaffMember staffMember)
{
ISession session = NHibernateSessionManager.Instance.GetSession();
ICriteria criteria = session.CreateCriteria(typeof(PmqccForm));
criteria.CreateAlias("Project", "Project");
criteria.Add(Expression.Eq("Project.ProjectLeader", staffMember));
criteria.Add(Expression.Eq("Project.IsArchived", false));
return criteria.List<PmqccForm>();
}
ただ、この方法を実行するNUnitのテストから私のコンソールの外観はほぼ2000のSQLクエリがprocesssedさがあることを示しています! http://rodhowarth.com/otherstorage/queries.txtはコンソールログです。
私はちょうどフォームオブジェクトをしたい、実際の質問は、基礎を知る必要性にアクセスすることができますこの段階では、です。私はNHibernateがこれを行うことができると考えていたと思った?ここで
は私のマッピングファイルです: http://rodhowarth.com/otherstorage/hibernatemapping.txt
誰もが私が欠けているものにとして私をヒントことができますか?またはNHibernateとの関係で私がやっていることを最適化する方法?
質問をコレクションにしてから、このコレクションを介してプロパティをループし、正しいものを返すとどうなりますか?これはnhibernatesの観点からより良い最適化ですか?
は、あなたが上記のメソッドを呼び出しているかwiht記事を更新してくださいことはできますか? – Baz1nga