1

我有 Personne(人)实体,其中包含子集合 Policy and Procedures。我想使用 Future 查询的功能加载一批 Personnes 并加载这些集合。但!我被要求不要在获取策略和程序的查询中复制 Personne 的列,这对于优化从数据库传输到服务器的数据量似乎是明智的。

这就是我最终要做的。

public IList<Personne> GetForDTO(IList<int> ids)
{
    IEnumerable<Personne> query = NHibernateSession.Current.Query<Personne>()
        .Fetch(x => x.Adresse)
        .Where(x => ids.Contains(x.Id))
        .ToFuture();

    var queryWithPolices = NHibernateSession.Current.Query<Personne>()
        .FetchMany(x => x.Polices)
        .Where(x => ids.Contains(x.Id))
        .Select(x => new
        {
            x.Id,
            x.Polices
        })
        .ToFuture();

    var queryWithProcedures = NHibernateSession.Current.Query<Personne>()
        .FetchMany(x => x.Procedures)
        .Where(x => ids.Contains(x.Id))
        .Select(x => new
        {
            x.Id,
            x.Procedures
        })
        .ToFuture();

    return query.ToList();
}

此查询不起作用,出现错误:Collections.IList' cannot be used for parameter of type 'System.Collections.Generic.IEnumerable`1[System.Object]'

如果我删除 Select() 行调用,它确实有效,但当然它会导致 Personne 列以及 Policys 和 Procedures 列被获取。

有解决这个问题的想法吗?

4

2 回答 2

-2

将您的返回类型更改为IEnumerable

public IIEnumerable<Personne> GetForDTO(IList<int> ids)
于 2015-03-27T16:19:45.100 回答
-2

将返回类型“IList”更改为“IEnumerable”

于 2015-03-27T14:10:08.490 回答