コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }