存储库模式多个选择器
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);
使用 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);