我有项目和客户模型。项目模型具有带有<many-to-one>
映射的客户对象。在数据库中,这可能是客户存在但在项目表中没有条目的情况。
我正在做客户搜索功能,用户可以在其中输入项目或客户名称。如果用户只输入客户名称,那么我想要所有与客户名称匹配的记录,而不考虑客户是否有项目。
我在服务中试过这个。
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
如果我看到它有列表但某些项目在项目表中没有记录,则此代码也没有给出任何错误为空。
我怎样才能得到这样的记录?