0

プロジェクトに関するすべての詳細を取得できるプロジェクト リストがあります。プロジェクトクラスでは、プロジェクトに顧客のオブジェクトがあり、顧客に従ってそのリストをフィルタリングしたいだけです。これどうやってするの 。

public ICollection<Project> GetProjectBasicDetailsByProjectTypeCustomerID(ProjectType projectType, string custName, string cordinatorName, string projectName)
    {
        oLog.Debug("Started");
        ISession session = DataAccessLayerHelper.OpenReaderSession();
        ITransaction transaction = null;
        ICollection<Project> projectList = null;
        try
        {
            transaction = session.BeginTransaction();
            ICriteria criteria = session.CreateCriteria(typeof(Project),"Project")
                .CreateAlias("Project.customer","customer",NHibernate.SqlCommand.JoinType.InnerJoin)
                .CreateAlias("Project.Coordinator", "Coordinator", NHibernate.SqlCommand.JoinType.InnerJoin)
                .Add(Restrictions.Eq("Project.ProjectType", projectType));


            projectList = criteria.List<Project>().ToList();

            session.Flush();
            transaction.Commit();
        }
        catch (Exception ex)
        {
            if (transaction != null && transaction.IsActive)
                transaction.Rollback();
            oLog.Error(ex);
        }
        finally
        {
            if (transaction != null)
                transaction.Dispose();

            if (session != null && session.IsConnected)
                session.Close();
        }
        oLog.Debug("End");
        return projectList;
    }
4

1 に答える 1

0

私があなたのことを正しく理解していれば、あなたのプロジェクトから明確な顧客を獲得したいと思いますか?

この場合、次のようなことがうまくいくと思います (これにより、この基準から明確なプロジェクト ID が得られるはずです。プロジェクトを直接取得する方法があるかもしれませんが、今はテストできません:

ICriteria criteria = session.CreateCriteria(typeof(Project),"Project")
                .SetProjection(Projections.Distinct(Projections.Property("project.Id")))
                .CreateAlias("Project.customer","customer",NHibernate.SqlCommand.JoinType.InnerJoin)
                .CreateAlias("Project.Coordinator", "Coordinator", NHibernate.SqlCommand.JoinType.InnerJoin)
                .Add(Restrictions.Eq("Project.ProjectType", projectType));
于 2012-10-23T13:50:14.630 に答える