How do you do additional filtering on a HasMany mapping in Fluent nHibernate?

心已入冬 提交于 2019-12-04 20:31:16

I don't know if it could help you but here is my take on in.

In FluentNHibernate you have a method called ApplyFilter that you can set up in your mappings in order to filter on child collections :

HasMany(x => x.CrewAssignments).KeyColumn("WorkOrderID").ApplyFilter<MyFilter>().Cascade.AllDeleteOrphan(); 

Then you can create your filter :

public class MyFilter: FilterDefinition
{
    public MyFilter()
    {
        WithName("contractor").WithCondition("Crew.ContractorId== :contractorId").AddParameter("contractorId", NHibernate.NHibernateUtil.Int32);
    }
}

Then in the implementation of your repository, you invoke the filter :

Sessions.EnableFilter("contractor").SetParameter("contractorId", 1254);

I don't know if this is the best solution but the only one that comes to my mind right now.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!