99 lines
3.3 KiB
C#
99 lines
3.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace ChatRoomServer.Db
|
|
{
|
|
using System.Data.Entity;
|
|
using ChatRoomServer.Db.Entities;
|
|
|
|
public class ChatDb : DbContext
|
|
{
|
|
static ChatDb()
|
|
{
|
|
System.Data.Entity.Database.SetInitializer<ChatDb>(null);
|
|
}
|
|
|
|
public ChatDb() :
|
|
base(System.Configuration.ConfigurationManager.ConnectionStrings["12306.chat"].ConnectionString)
|
|
{
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// This method is called when the model for a derived context has been initialized, but
|
|
/// before the model has been locked down and used to initialize the context. The default
|
|
/// implementation of this method does nothing, but it can be overridden in a derived class
|
|
/// such that the model can be further configured before it is locked down.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// Typically, this method is called only once when the first instance of a derived context
|
|
/// is created. The model for that context is then cached and is for all further instances of
|
|
/// the context in the app domain. This caching can be disabled by setting the ModelCaching
|
|
/// property on the given ModelBuidler, but note that this can seriously degrade performance.
|
|
/// More control over caching is provided through use of the DbModelBuilder and DbContextFactory
|
|
/// classes directly.
|
|
/// </remarks>
|
|
/// <param name="modelBuilder">The builder that defines the model for the context being created. </param>
|
|
protected override void OnModelCreating(DbModelBuilder modelBuilder)
|
|
{
|
|
base.OnModelCreating(modelBuilder);
|
|
|
|
var cfg = modelBuilder.Configurations;
|
|
cfg.AddFromAssembly(System.Reflection.Assembly.GetExecutingAssembly());
|
|
}
|
|
|
|
public virtual DbSet<User> Users { get; set; }
|
|
|
|
public virtual DbSet<Room> Rooms { get; set; }
|
|
|
|
public virtual DbSet<ServerGroup> ServerGroups { get; set; }
|
|
|
|
public virtual DbSet<MsgLog> MsgLogs { get; set; }
|
|
|
|
public virtual DbSet<Announcement> Announcements { get; set; }
|
|
|
|
|
|
public virtual DbSet<OnlineHistory> OnlineHistories { get; set; }
|
|
|
|
public virtual DbSet<AbuseReport> AbuseReports { get; set; }
|
|
|
|
public virtual DbSet<UserConnectLog> UserConnectLogs { get; set; }
|
|
|
|
public virtual DbSet<BlockUser> BlockUsers { get; set; }
|
|
|
|
/// <summary>
|
|
/// 异步获得指定用户的屏蔽列表
|
|
/// </summary>
|
|
/// <param name="username"></param>
|
|
/// <returns></returns>
|
|
public Task<BlockUser[]> GetBlockRuleForUserAsync(string username)
|
|
{
|
|
return BlockUsers.SqlQuery("exec usp_BlockUser_GetUserBlockRule {0}", username).ToArrayAsync();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 异步获得指定用户的屏蔽列表
|
|
/// </summary>
|
|
/// <param name="username"></param>
|
|
/// <returns></returns>
|
|
public BlockUser[] GetBlockRuleForUser(string username)
|
|
{
|
|
return BlockUsers.SqlQuery("exec usp_BlockUser_GetUserBlockRule {0}", username).ToArray();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查询指定用户在单位时间内被举报的人数
|
|
/// </summary>
|
|
/// <param name="username"></param>
|
|
/// <param name="minutes"></param>
|
|
/// <returns></returns>
|
|
public int GetUserAbuseReportCountInTime(string username, int minutes)
|
|
{
|
|
return Database.SqlQuery<int>("exec usp_BlockUser_GetUserReportCount {0}, {1}", username, minutes).First();
|
|
}
|
|
}
|
|
}
|