我正在尝试执行此查询来检索特定实体类型的审核项目
public List<Audit> GetAuditChangesSince(DateTime since, string entityType)
{
return (from a in OrgContext.CreateQuery<Audit>()
where
a.ObjectId != null && a.ObjectId.LogicalName == entityType &&
a.CreatedOn > since
select a).ToList();
}
The a.ObjectId != null && a.ObjectId.LogicalName == 实体类型 &&条款引起了问题。我知道 .Equals() 可能会导致问题(因此 ==),并且 LINQ 提供程序有以下限制:
子句的左侧必须是属性名称,子句的右侧必须是值
左边是属性,右边是常量。 .ObjectId.LogicalName 是否导致了问题?
由于审核实体不提供与特定记录相关的实体的逻辑名称/类型代码的底层属性,因此您在此处可以做的最好的事情就是链接到您希望查找的实体(或多个实体)审计记录——即不检索所有记录。
针对此类场景的通用技术是,您可以使用半无意义的条件(例如检查主键不为空)链接到相关实体。对于您的情况,只需链接就足够了。
提取与联系人关联的审核记录的示例:
from a in OrgContext.CreateQuery<Audit>()
join c in ContactSet on a.ObjectId.Id equals c.ContactId
where a.ObjectId != null && a.CreatedOn > since
select a
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)