1

我有三个表,组-> 用户-> 帐户。组可以有多个用户,用户可以有多个帐户。

当我尝试使用查询获取组中的所有帐户时

var accounts = accountRepository.FindAll(x => x.User.Group.Id == groupId);

其中 FindAll 是公共存储库中的方法

/// <summary>
/// Find all entities with filter
/// </summary>
/// <param name="expression">Linq expression</param>
/// <returns>IQueryOver of entity of type TEntity</returns>
public IQueryOver<TEntity> FindAll(Expression<Func<TEntity, bool>> expression)
{
    var query = _session.QueryOver<TEntity>();
    query.Cacheable().CacheMode(CacheMode.Normal);
    return query.Where(expression);
}

我在组中查找所有帐户的查询不起作用,因为它会抛出消息错误

could not resolve property: User.Group.Id

编写此查询的更好方法是什么

4

1 回答 1

4

改用 Linq 到 NHibernate:

public IQueryable<TEntity> FindAll(Expression<Func<TEntity, bool>> expression)
{
    var query = _session.Query<TEntity>();
    return query.Where(expression);
}

与 不同QueryOver的是,Linq 提供程序支持此类查询(遍历实体层次结构),将其转换为 SQL 连接。

于 2012-08-05T13:45:45.110 回答