protected virtual string CreateDeliveryTypeUpdateQuery(UpdateParameters parameters, DbContext context) { string tvpName = TableValuedParameters.GetFullTVPName(_connectionSettings.Schema, TableValuedParameters.SUBSCRIBER_TYPE); var merge = new MergeCommand <SubscriberDeliveryTypeSettingsLong>(context, null, tvpName, TableValuedParameters.UPDATE_SUBSCRIBERS_PARAMETER_NAME); merge.Compare .IncludeProperty(p => p.SubscriberId) .IncludeProperty(p => p.DeliveryType); merge.UpdateMatched.ExcludeAllByDefault = true; if (parameters.UpdateDeliveryTypeSendCount) { merge.UpdateMatched.Assign(t => t.SendCount, (t, s) => t.SendCount + s.SendCount); } if (parameters.UpdateDeliveryTypeLastSendDateUtc) { merge.UpdateMatched.Assign(t => t.LastSendDateUtc, (t, s) => DateTime.UtcNow); } return(merge.ConstructCommandTVP(MergeType.Update)); }
protected virtual string CreateTopicUpdateQuery(UpdateParameters parameters, DbContext context) { string tvpName = TableValuedParameters.GetFullTVPName(_connectionSettings.Schema, TableValuedParameters.SUBSCRIBER_TYPE); var merge = new MergeCommand <SubscriberTopicSettingsLong>(context, null, tvpName, TableValuedParameters.UPDATE_SUBSCRIBERS_PARAMETER_NAME); merge.Compare.IncludeProperty(p => p.SubscriberId) .IncludeProperty(p => p.CategoryId) .IncludeProperty(p => p.TopicId); merge.UpdateMatched.ExcludeAllByDefault = true; if (parameters.UpdateTopicSendCount) { merge.UpdateMatched.Assign(t => t.SendCount, (t, s) => t.SendCount + s.SendCount); } if (parameters.UpdateTopicLastSendDateUtc) { merge.UpdateMatched.Assign(t => t.LastSendDateUtc, (t, s) => DateTime.UtcNow); } if (parameters.CreateTopicIfNotExist) { merge.Insert .ExcludeProperty(t => t.SubscriberTopicSettingsId) .IncludeValue(t => t.AddDateUtc, DateTime.UtcNow) .IncludeValue(t => t.IsEnabled, true) .IncludeValue(t => t.LastSendDateUtc, DateTime.UtcNow) .IncludeValue(t => t.IsDeleted, false); } MergeType mergeType = parameters.CreateTopicIfNotExist ? MergeType.Upsert : MergeType.Update; return(merge.ConstructCommandTVP(mergeType)); }