本文整理汇总了C#中IDataContext.Moderatorials方法的典型用法代码示例。如果您正苦于以下问题:C# IDataContext.Moderatorials方法的具体用法?C# IDataContext.Moderatorials怎么用?C# IDataContext.Moderatorials使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IDataContext
的用法示例。
在下文中一共展示了IDataContext.Moderatorials方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: AddModeratorials
private static void AddModeratorials(
IDataContext db,
IEnumerable<JanusModerateInfo> moderatorials)
{
foreach (var mdr in moderatorials)
{
var localMdr = mdr;
if (IsModeratorialExists(db, mdr.messageId, mdr.userId))
db
.Moderatorials(
mod =>
mod.MessageID == localMdr.messageId
&& mod.UserID == localMdr.userId)
.Set(_ => _.Create, () => localMdr.create)
.Set(_ => _.ForumID, () => localMdr.forumId)
.Update();
else
db
.Moderatorials()
.Value(_ => _.MessageID, localMdr.messageId)
.Value(_ => _.UserID, localMdr.userId)
.Value(_ => _.ForumID, localMdr.forumId)
.Value(_ => _.Create, localMdr.create)
.Insert();
}
}
示例2: UpdateTopicInfoByFilter
/// <summary>
/// Обновляет агрегатные данные по темам (таблицу topic_info).
/// Эта процедура сначала удаляет записи соответствующие параметру filter,
/// а потом формирует агрегатные данные и добавляет их в topic_info.
/// Транзакция должна контролироваться вызывающим методом.
/// </summary>
/// <param name="db"></param>
/// <param name="msgPredicate">Необязательный параметр позволяющий задать
/// фильтрацию тем данные по которым нужно пересчитать.
/// Может быть null или string.Empty. Если параметр не задан,
/// обновляются все сообщения. При этом время обновления может быть
/// довольно большим (на Athlon 2100+ 512 MB RAM ~ 1 мин.).
/// Пример: "mid IN (1, 2, 3)" обновит агрегатные значения
/// для тем 1, 2 и 3.</param>
/// <param name="topicPredicate">комплиментарный <see cref="msgPredicate"/> предикат для TopicInfo</param>
/// <returns>Возвращает количество вставленных записей.</returns>
private static int UpdateTopicInfoByFilter(
IDataContext db,
[CanBeNull] Expression<Func<ITopicInfo, bool>> topicPredicate,
[CanBeNull] Expression<Func<IForumMessage, bool>> msgPredicate)
{
// Удаляем.
//
if (topicPredicate != null)
db
.TopicInfos(topicPredicate)
.Delete();
else
db.TopicInfos().Delete();
var rates = db.Rates();
var mods = db.Moderatorials();
var msgs = db.Messages(m => m.TopicID == 0);
if (msgPredicate != null)
msgs = msgs.Where(msgPredicate);
var updated =
msgs
.Into(db.TopicInfos())
.Value(_ => _.MessageID, m => m.ID)
.Value(_ => _.ForumID, m => m.ForumID)
// ReSharper disable once UseCollectionCountProperty
.Value(_ => _.AnswersCount, m => m.TopicAnswers.Count())
.Value(
_ => _.AnswersRates,
m =>
rates
.Where(r => r.Message.TopicID == m.ID && r.RateType > 0)
.Sum(r => (int)r.RateType * r.Multiplier))
.Value(
_ => _.AnswersUnread,
m => m.TopicAnswers.Count(im => !im.IsRead) + (m.IsRead ? 0 : 1))
.Value(
_ => _.AnswersSmiles,
m =>
rates
.Count(r => r.Message.TopicID == m.ID && r.RateType == MessageRates.Smile))
.Value(
_ => _.AnswersAgrees,
m =>
rates
.Count(r => r.Message.TopicID == m.ID && r.RateType == MessageRates.Agree))
.Value(
_ => _.AnswersDisagrees,
m =>
rates
.Count(r => r.Message.TopicID == m.ID && r.RateType == MessageRates.DisAgree))
.Value(
_ => _.AnswersToMeUnread,
m =>
m
.TopicAnswers
.Count(im => !im.IsRead && im.Parent.UserID == Config.Instance.SelfId))
.Value(_ => _.AnswersMarked, m => m.TopicAnswers.Count(im => im.IsMarked))
.Value(_ => _.LastUpdateDate, m => m.TopicAnswers.Max(im => (DateTime?)im.Date) ?? m.Date)
.Value(
_ => _.AnswersModeratorials,
m =>
mods
.Count(
mod =>
mod.Message.TopicID == m.ID
&& (mod.Message.LastModerated == null || mod.Create > mod.Message.LastModerated)))
.Value(_ => _.SelfRates, m => m.Rating())
.Value(_ => _.SelfSmiles, m => m.SmileCount())
.Value(_ => _.SelfAgrees, m => m.AgreeCount())
.Value(_ => _.SelfDisagrees, m => m.DisagreeCount())
.Value(_ => _.SelfModeratorials, m => m.ActiveModeratorialCount())
.Insert();
return updated;
}
示例3: IsModeratorialExists
private static bool IsModeratorialExists(IDataContext db, int messageId, int userId)
{
return
db
.Moderatorials()
.Count(m => m.MessageID == messageId && m.UserID == userId) > 0;
}