簡體   English   中英

CRM 插件 IQueryable 早期綁定實體子查詢是“調用無效的屬性或方法”

[英]CRM Plugin IQueryable Early bound Entities subquery is “invoking an invalid property or method”

我有一些使用 XrmToolbox 構建的早期實體,使用 IQueryable 數據集,嘗試提取一些案例標題,其中案例未鏈接到另一個實體。 嘗試了這兩種方法,它們產生了幾乎相同的錯誤:

if (cases.Where(x => !serviceContext.new_casegroupSet.Any(y => y.new_case.Id == x.IncidentId)).ToList().Count() > 0)
{
    throw new InvalidPluginExecutionException(OperationStatus.Canceled, 
        $"Case/s missing Groups: \"{(cases.Where(x => !serviceContext.new_casegroupSet.Any(y => y.new_case.Id == x.IncidentId)).Select(x => x.Title).ToList())}\"");
}

if (cases.Where(x => serviceContext.new_casegroupSet.Where(y => y.new_case.Id == x.IncidentId).ToList().Count() == 0).ToList().Count() > 0)
{
    throw new InvalidPluginExecutionException(OperationStatus.Canceled, 
        $"Case/s missing Groups: \"{(cases.Where(x => serviceContext.new_casegroupSet.Where(y => y.new_case.Id == x.IncidentId).ToList().Count() == 0).Select(x => x.Title).ToList())}\"");
}

錯誤是: Invalid 'where' condition. An entity member is invoking an invalid property or method. Invalid 'where' condition. An entity member is invoking an invalid property or method.

我沒有嵌套 Where() 或 Any() 的任何這些似乎都可以正常工作,但 Any() 實際上似乎根本不起作用。

這甚至可能嗎? 或者我是否必須首先獲取案例並遍歷它們以獲取鏈接實體中的匹配項?

LINQ to CRM Provider 在編譯的地方有很多限制,但實際上並沒有運行。 我假設嵌套這些類型的語句就是其中之一。 如果您想走那條路,我建議嘗試將它作為帶有 Join 的普通 LINQ 語句運行。

就我個人而言,在嘗試了幾個月的 LINQ to CMR 之后,我放棄了它以及何時盡可能使用 QueryExpressions,創建了一大堆擴展方法以使其更易於使用。 您可以隨意下載我的 nuget 庫 DLaB.Xrm.Source。 這簡化了它們並消除了很多冗長的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM