存储库模式多个选择器

Repository Pattern Multiple selectors

使用 UnitOfWork 存储库模式,我可以使用以下方法访问参考:

var tmp = unitOfWork.Repository<User>().Queryable();

我想查询 table 并恢复一个帐户,其中 AccountId 是一个长整数:

result = a.Any(e => e.AccountId == AccountId);

这为我提供了 AccountId 的帐户记录。

我还有一个名为 table 的电子邮件链接到帐户 table。所以我现在希望将上面的查询更新为以下内容:

result = a.Any(e => 
    e.AccountId == AccountId &&
    e.Email.EmailID == EmailID
);

其中 EmailId 是长整数。现在应该为特定用户帐户提取特定电子邮件。

我得到的是:

Operator '&&' cannot be applied to operands of type 'bool' and 'User'

不清楚你想要什么,但是

var tmp = unitOfWork.Repository<User>().Queryable();

应该给你 IQueryable<User> 你可以应用 Where 条件,但你会得到 User 集合或对象的结果。

unitOfWork.Repository<User>().Queryable().Where(e => 
    e.AccountId == AccountId &&
    e.Email.EmailID == EmailID
);

如果您想要 Email,您应该使用上面的 User 对象加载 Email 或应用您的条件 unitOfWork.Repository<Email>().Queryable();

我发现如果我使用以下内容,它对我有用。

Result = searchQuery.Any(e =>
                    e.AccountId == AccountId &&
                    e.Email.Any(f => f.Id == EmailId);