public string CreateDeliveryTypeQuery(UpdateParameters parameters, DbContext context , string prefix = null) { string tvpName = prefix + CoreTVP.UPDATE_USER_TYPE; var merge = new MergeOperation<UserDeliveryTypeSettings<Guid>>(context, null, tvpName, CoreTVP.UPDATE_USERS_PARAMETER_NAME); merge.Compare.IncludeProperty(p => p.UserID) .IncludeProperty(p => p.DeliveryType); merge.Update.ExcludeAllPropertiesByDefault = true; if (parameters.UpdateDeliveryTypeSendCount) { merge.Update.Assign(t => t.SendCount, (t, s) => t.SendCount + s.SendCount); } if (parameters.UpdateDeliveryTypeLastSendDateUtc) { merge.Update.Assign(t => t.LastSendDateUtc, (t, s) => DateTime.UtcNow); } return merge.ConstructCommand(MergeType.Update); }
public string CreateTopicQuery(UpdateParameters parameters, DbContext context , string prefix = null) { string tvpName = prefix + CoreTVP.UPDATE_USER_TYPE; var merge = new MergeOperation<UserTopicSettings<Guid>>(context, null, tvpName, CoreTVP.UPDATE_USERS_PARAMETER_NAME); merge.Compare.IncludeProperty(p => p.UserID) .IncludeProperty(p => p.CategoryID) .IncludeProperty(p => p.TopicID); merge.Update.ExcludeAllPropertiesByDefault = true; if (parameters.UpdateTopicSendCount) { merge.Update.Assign(t => t.SendCount, (t, s) => t.SendCount + s.SendCount); } if (parameters.UpdateTopicLastSendDateUtc) { merge.Update.Assign(t => t.LastSendDateUtc, (t, s) => DateTime.UtcNow); } if (parameters.CreateTopicIfNotExist) { merge.Insert.IncludeDefault(t => t.AddDateUtc, DateTime.UtcNow) .IncludeDefault(t => t.IsEnabled, true) .IncludeDefault(t => t.LastSendDateUtc, DateTime.UtcNow) .IncludeDefault(t => t.IsDeleted, false); } MergeType mergeType = parameters.CreateTopicIfNotExist ? MergeType.Upsert : MergeType.Update; return merge.ConstructCommand(mergeType); }