Nhibernate,加入没有导航属性的集合

时间:2016-10-25 09:48:55

标签: c# linq nhibernate queryover

我有这个域名对象:

public class Society {
    public virtual int IdSociety { get; set; }
    public virtual string NameSociety { get; set; }
}

public class Activity {
    public virtual int IdActivity { get; set; }
    public virtual IEnumerable<ExaminatedProcess> Processes
}

public class ExaminatedProcess {
    public virtual ProcessSociety ProcessCoperto { get; set; }
    public virtual int Year { get; set; }
}

public class ProcessSociety {
    public override int Id { get; set; }
    public virtual Society SocietyOwner { get; set; }
    public virtual Society SocietyService { get; set; }
}

public class Process    {
    public virtual int Id { get; set; }
    public virtual string NameProcess { get; set; }
    public virtual IEnumerable<ProcessSociety> SocietyActivated
}

我希望Process Activity NameProcessSocietyOwner.NameSocietySocietyService.NameSociety每次Process使用QueryOver或LinqToNHibernate从db中提取

所以我认为: 我必须从SocietyActivated开始,让那些在Processes中的Activity ProcessCoperto ProcessSociety ps = null; var elencoPS = att.Processes.Select(p => p.ProcessCoperto).ToList<ProcessSociety>(); var a = _session.QueryOver<Process>() .JoinAlias(Process => Process.SocietyActivated, () => ps) .WhereRestrictionOn(Process => ps.Id).IsIn(elencoPS.Select(el => el.Id).ToList()) .Select(Projections.Property(() => ps.SocietyOwner.NameSociety), Projections.Property(() => ps.SocietyService.NameSocietyBreve)) .List(); 集合中的人看到每个元素的ExaminatedProcess属性这个集合

this问题我解决了第一个问题并到达:

var d = (
                      from p in _session.Query<Processo>()
                      from actin _session.Query<Activity>()
                      from pe in _session.Query<ExaminatedProcess>()
                      where act.Processes.Contains(pe)
                            && p.SocietyActivated.Contains(pe.ProcessoCoperto)
                      select new {p.NomeProcesso, pe.ProcessoCoperto.SocietyOwner.Name}
                  ).ToList();

但现在我的问题是如何添加Runnable mStatusChecker = new Runnable() { @Override public void run() { try{ StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); downloadusernamelist(); isInternetWorking(); syncDataSftp(); }finally { mHandler.postDelayed(mStatusChecker, mInterval); }}};

我发现像this这样的类似问题,但仍然适用于hql,我希望在4年后找到更好的方法

修改

我甚至以这种方式尝试:

client,err :=elasticsearch.NewClient(elasticsearch.ClientSettings{URL:host,Index:indexSel,Username: username,Password: password,Timeout:  60 * time.Second,}, nil)
if err != nil {
    log.Fatal(err)
}

params := map[string]string{
    "q": "_id:"+maref,
}
_, resp, err := client.SearchURI(index, "", params)

if err != nil {
    log.Fatal(err)
    return
} else {
    fmt.Println(string(resp))
}

但没有找到结果并且查找日志没有对db执行查询

0 个答案:

没有答案