プロジェクトと顧客モデルがあります。プロジェクト モデルには、マッピングを持つ顧客オブジェクトがあり<many-to-one>
ます。これは、顧客が存在するが、プロジェクト テーブルにエントリがない場合に発生する可能性があります。
ユーザーがプロジェクトまたは顧客名を入力できるCustomerSearch機能を実行しています。ユーザーが顧客名のみを入力した場合、顧客がプロジェクトを持っているかどうかを考慮せずに、CustomerNameと一致するすべてのレコードが必要です。
サービスでこれを試しました。
ICriteria criteria = session.CreateCriteria(typeof(Project),"Project")
.CreateAlias("Project.customer","customer",NHibernate.SqlCommand.JoinType.RightOuterJoin)
.CreateAlias("Project.Coordinator", "Coordinator", NHibernate.SqlCommand.JoinType.InnerJoin);
if (!string.IsNullOrEmpty(custName))
{
criteria.Add(Expression.Like("customer.Name", custName, MatchMode.Start));
}
if (!string.IsNullOrEmpty(projectName))
{
criteria.Add(Expression.Like("Project.Name", projectName, MatchMode.Start));
}
projectList = criteria.List<Project>().ToList();
プロジェクトテーブルには顧客のレコードがない可能性がありますが、顧客テーブルにはそれらのレコードが必要なため、RightOuterJoin to Customer を使用しました。
このコードは、projectList
リストが表示されていても、プロジェクトテーブルにnullのレコードがないアイテムがいくつかある場合でも、エラーを出していません。
どうすればそのような記録を取得できますか?