I have some code that I entered in a BPM. When I check the syntax in the BPM it comes back all good. When I validate the BPM it comes back all good. I even do not run into trouble when saving it. But when I get the BPM to fire, I get this error.
Server Side Exception
BPM runtime caught an unexpected exception of 'NotSupportedException' type.
See more info in the Inner Exception section of Exception Details.
Exception caught in: Epicor.ServiceModel
Error Detail
============
Description: BPM runtime caught an unexpected exception of 'NotSupportedException' type.
See more info in the Inner Exception section of Exception Details.
Program: System.Data.Entity.dll
Method: Translate
Original Exception Type: NotSupportedException
Framework Method: C004_CustomCodeCondition
Framework Line Number: 151
Framework Column Number: 13
Framework Source: C004_CustomCodeCondition at offset 685 in file:line:column Update.Pre.Cust_Hold.cs:151:13
Server Trace Stack: at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.DefaultTranslator.Translate(ExpressionConverter parent, MethodCallExpression call)
at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.EqualsTranslator.TypedTranslate(ExpressionConverter parent, BinaryExpression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TranslateLambda(LambdaExpression lambda, DbExpression input)
at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call, DbExpression& source, DbExpressionBinding& sourceBinding, DbExpression& lambda)
at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.OneLambdaTranslator.Translate(ExpressionConverter parent, MethodCallExpression call)
at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.AggregateTranslator.Translate(ExpressionConverter parent, MethodCallExpression call)
at System.Data.Objects.ELinq.ExpressionConverter.MethodCallTranslator.TypedTranslate(ExpressionConverter parent, MethodCallExpression linq)
at System.Data.Objects.ELinq.ExpressionConverter.TranslateExpression(Expression linq)
at System.Data.Objects.ELinq.ExpressionConverter.Convert()
at System.Data.Objects.ELinq.ELinqQueryState.GetExecutionPlan(Nullable`1 forMergeOption)
at System.Data.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption)
at System.Data.Objects.ObjectQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator()
at System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
at Epicor.Customization.Bpm.BO3B620D1AF1D74E6E92235625A378BAAA.UpdatePreProcessingDirective_Cust_Hold_2FC3146ED11845B08B390D0A4A2E9535.C004_CustomCodeCondition() in Update.Pre.Cust_Hold.cs:line 151
at Epicor.Customization.Bpm.BO3B620D1AF1D74E6E92235625A378BAAA.UpdatePreProcessingDirective_Cust_Hold_2FC3146ED11845B08B390D0A4A2E9535.ExecuteCore() in Update.Pre.Cust_Hold.cs:line 80
at Epicor.Customization.Bpm.DirectiveBase`3.Execute(TParam parameters) in c:\_Releases\ICE\3.1.600.0\Source\Server\Internal\Lib\Epicor.Customization.Bpm\DirectiveBase.Generic.cs:line 129
Client Stack Trace
==================
at Epicor.ServiceModel.Channels.ImplBase`1.ShouldRethrowNonRetryableException(Exception ex, DataSet[] dataSets)
at Ice.Proxy.BO.BpHoldsImpl.Update(BpHoldsDataSet ds)
at Ice.Adapters.BpHoldsAdapter.OnDelete()
at Ice.Lib.Framework.EpiBaseAdapter.Delete(DataRow dr)
at Ice.UI.App.BpHoldsEntry.AttachTransaction.adapterDelete(DataRow dr)
at Ice.UI.App.BpHoldsEntry.AttachTransaction.Delete()
Inner Exception
===============
LINQ to Entities does not recognize the method 'System.String ToString()' method, and this method cannot be translated into a store expression.
Has anyone ever seen anything like this? Not sure why it checks out fine in the BPM but errors out when it fires. When looking at the code in VS, the error is being called out on the first character (v) of the third line below.
private bool C004_CustomCodeCondition()
{
var myID = (from thisHold in ttBpHoldAttachment select thisHold.HoldSysRowID);
int myCount = (from myHold in Db.BpHoldAttachment.With(LockHint.UpdLock) where
myHold.HoldSysRowID.ToString() == myID.ToString()
select myHold).Count();
if (myCount > 1)
{
return true;
}
else
{
return false;
}
}