Description
The query plan cache is never hit for linq DML queries.
ISession.Query<StmtAccountStat>().Where(x => x.AccountNo == "1311").Update(x => new StmtAccountStat() { FirstDelayDate = DateTime.Now });
p2 is Entity Class we should ignore in ExpressionParameterVisitor.cs VisitConstant
p5 is the property name that we want to update should be ignored
DmlExpressionRewriter.cs ConvertAssignmentsToDictionaryExpression method below code adds extra 2 parameter p3=1, p4=1 should be ignored
var listInit = Expression.ListInit(
Expression.New(
DictionaryConstructorInfo,
Expression.Condition(
Expression.Equal(param, Expression.Constant(null, typeof(TSource))),
Expression.Constant(assignments.Count),
Expression.Constant(assignments.Count))),
inits);
IQueryExpression.Key
UPDATE .Select[**StmtAccountStat**, Issuing.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null,**System.Collections.Generic.Dictionary**`2[[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Object, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e](.Where[StmtAccountStat, Issuing.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null](NHibernate.Linq.NhQueryable`1[StmtAccountStat], Quote((x, ) => (String.op_Equality(x.AccountNo, p1))), ), Quote((, ) => (new System.Collections.Generic.Dictionary`2[[System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.Object, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]], System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e(**Equal(, NULL) ? p3 : p4, )p5**p6)), )