using System; using System.Collections.Generic; using Microsoft.EntityFrameworkCore; using Pomelo.EntityFrameworkCore.MySql.Scaffolding.Internal; namespace IM_API.Models; public partial class ImContext : DbContext { public ImContext() { } public ImContext(DbContextOptions options) : base(options) { } public virtual DbSet Admins { get; set; } public virtual DbSet Conversations { get; set; } public virtual DbSet Devices { get; set; } public virtual DbSet Files { get; set; } public virtual DbSet Friends { get; set; } public virtual DbSet FriendRequests { get; set; } public virtual DbSet Groups { get; set; } public virtual DbSet GroupInvites { get; set; } public virtual DbSet GroupMembers { get; set; } public virtual DbSet GroupRequests { get; set; } public virtual DbSet LoginLogs { get; set; } public virtual DbSet Messages { get; set; } public virtual DbSet Notifications { get; set; } public virtual DbSet Permissions { get; set; } public virtual DbSet Permissionaroles { get; set; } public virtual DbSet Roles { get; set; } public virtual DbSet Users { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { optionsBuilder.UseMySql( "server=frp-era.com;port=26582;database=IM;user=product;password=12345678", ServerVersion.Parse("5.7.44-mysql") ); } } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder .UseCollation("latin1_swedish_ci") .HasCharSet("latin1"); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("admins") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.HasIndex(e => e.RoleId, "RoleId"); entity.Property(e => e.Id) .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.Created) .HasComment("创建时间 ") .HasColumnType("datetime"); entity.Property(e => e.Password) .HasMaxLength(50) .HasComment("密码"); entity.Property(e => e.RoleId) .HasComment("角色") .HasColumnType("int(11)"); entity.Property(e => e.State) .HasComment("状态(0:正常,2:封禁) ") .HasColumnType("tinyint(4)"); entity.Property(e => e.Updated) .HasComment("更新时间 ") .HasColumnType("datetime"); entity.Property(e => e.Username) .HasMaxLength(50) .HasComment("用户名"); entity.HasOne(d => d.Role).WithMany(p => p.Admins) .HasForeignKey(d => d.RoleId) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("admins_ibfk_1"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("conversations") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.HasIndex(e => e.UserId, "Userid"); entity.HasIndex(e => e.LastMessageId, "lastMessageId"); entity.Property(e => e.Id) .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.LastMessageId) .HasComment("最后一条消息ID ") .HasColumnType("int(11)") .HasColumnName("lastMessageId"); entity.Property(e => e.MsgType) .HasComment("消息类型(同Messages.MsgType) ") .HasColumnType("int(11)"); entity.Property(e => e.TargetId) .HasComment("对方ID(群聊为群聊ID,单聊为单聊ID) ") .HasColumnType("int(11)"); entity.Property(e => e.UnreadCount) .HasComment("未读消息数 ") .HasColumnType("int(11)"); entity.Property(e => e.UserId) .HasComment("用户") .HasColumnType("int(11)"); entity.HasOne(d => d.LastMessage).WithMany(p => p.Conversations) .HasForeignKey(d => d.LastMessageId) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("conversations_ibfk_2"); entity.HasOne(d => d.User).WithMany(p => p.Conversations) .HasForeignKey(d => d.UserId) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("conversations_ibfk_1"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("devices") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.HasIndex(e => e.UserId, "Userid"); entity.Property(e => e.Id) .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.Dtype) .HasComment("设备类型(\r\n0:Android,1:Ios,2:PC,3:Pad,4:未知)") .HasColumnType("tinyint(4)") .HasColumnName("DType"); entity.Property(e => e.LastLogin) .HasComment("最后一次登录 ") .HasColumnType("datetime"); entity.Property(e => e.UserId) .HasComment("设备所属用户 ") .HasColumnType("int(11)"); entity.HasOne(d => d.User).WithMany(p => p.Devices) .HasForeignKey(d => d.UserId) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("devices_ibfk_1"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("files") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.HasIndex(e => e.MessageId, "Messageld"); entity.Property(e => e.Id) .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.Created) .HasComment("创建时间 ") .HasColumnType("datetime"); entity.Property(e => e.MessageId) .HasComment("关联消息ID ") .HasColumnType("int(11)"); entity.Property(e => e.Name) .HasMaxLength(50) .HasComment("文件名 "); entity.Property(e => e.Size) .HasComment("文件大小(单位:KB) ") .HasColumnType("int(11)"); entity.Property(e => e.Type) .HasMaxLength(10) .HasComment("文件类型 "); entity.Property(e => e.Url) .HasMaxLength(100) .HasComment("文件储存URL ") .HasColumnName("URL"); entity.HasOne(d => d.Message).WithMany(p => p.Files) .HasForeignKey(d => d.MessageId) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("files_ibfk_1"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("friends") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.HasIndex(e => e.Id, "ID"); entity.HasIndex(e => new { e.UserId, e.FriendId }, "Userld"); entity.HasIndex(e => e.FriendId, "用户2id"); entity.Property(e => e.Id) .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.Avatar) .HasMaxLength(255) .HasComment("好友头像"); entity.Property(e => e.Created) .HasComment("好友关系创建时间") .HasColumnType("datetime"); entity.Property(e => e.FriendId) .HasComment("用户2ID") .HasColumnType("int(11)"); entity.Property(e => e.RemarkName) .HasMaxLength(20) .HasComment("好友备注名"); entity.Property(e => e.Status) .HasComment("当前好友关系状态\r\n(0:待通过,1:已添加,2:已拒绝,3:已拉黑)") .HasColumnType("tinyint(4)"); entity.Property(e => e.UserId) .HasComment("用户ID") .HasColumnType("int(11)"); entity.HasOne(d => d.FriendNavigation).WithMany(p => p.FriendFriendNavigations) .HasForeignKey(d => d.FriendId) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("用户2id"); entity.HasOne(d => d.User).WithMany(p => p.FriendUsers) .HasForeignKey(d => d.UserId) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("用户id"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("friend_request") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.HasIndex(e => e.RequestUser, "RequestUser"); entity.HasIndex(e => e.ResponseUser, "ResponseUser"); entity.Property(e => e.Id) .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.Created) .HasComment("申请时间 ") .HasColumnType("datetime"); entity.Property(e => e.Description) .HasComment("申请附言 ") .HasColumnType("text"); entity.Property(e => e.RequestUser) .HasComment("申请人 ") .HasColumnType("int(11)"); entity.Property(e => e.ResponseUser) .HasComment("被申请人 ") .HasColumnType("int(11)"); entity.Property(e => e.State) .HasComment("申请状态(0:待通过,1:拒绝,2:同意,3:拉黑) ") .HasColumnType("tinyint(4)"); entity.HasOne(d => d.RequestUserNavigation).WithMany(p => p.FriendRequestRequestUserNavigations) .HasForeignKey(d => d.RequestUser) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("friend_request_ibfk_1"); entity.HasOne(d => d.ResponseUserNavigation).WithMany(p => p.FriendRequestResponseUserNavigations) .HasForeignKey(d => d.ResponseUser) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("friend_request_ibfk_2"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("groups") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.HasIndex(e => e.GroupMaster, "GroupMaster"); entity.HasIndex(e => e.Id, "ID"); entity.Property(e => e.Id) .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.AllMembersBanned) .HasComment("全员禁言(0允许发言,2全员禁言)") .HasColumnType("tinyint(4)"); entity.Property(e => e.Announcement) .HasComment("群公告") .HasColumnType("text"); entity.Property(e => e.Auhority) .HasComment("群权限\r\n(0:需管理员同意,1:任意人可加群,2:不允许任何人加入)") .HasColumnType("tinyint(4)"); entity.Property(e => e.Created) .HasComment("群聊创建时间") .HasColumnType("datetime"); entity.Property(e => e.GroupMaster) .HasComment("群主") .HasColumnType("int(11)"); entity.Property(e => e.Name) .HasMaxLength(20) .HasComment("群聊名称"); entity.Property(e => e.Status) .HasComment("群聊状态\r\n(1:正常,2:封禁)") .HasColumnType("tinyint(4)"); entity.HasOne(d => d.GroupMasterNavigation).WithMany(p => p.Groups) .HasForeignKey(d => d.GroupMaster) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("groups_ibfk_1"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("group_invite") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.HasIndex(e => e.GroupId, "GroupId"); entity.HasIndex(e => e.InviteUser, "InviteUser"); entity.HasIndex(e => e.InvitedUser, "InvitedUser"); entity.Property(e => e.Id) .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.Created) .HasComment("创建时间") .HasColumnType("datetime"); entity.Property(e => e.GroupId) .HasComment("群聊编号") .HasColumnType("int(11)"); entity.Property(e => e.InviteUser) .HasComment("邀请用户") .HasColumnType("int(11)"); entity.Property(e => e.InvitedUser) .HasComment("被邀请用户") .HasColumnType("int(11)"); entity.Property(e => e.State) .HasComment("当前状态(0:待被邀请人同意\r\n1:被邀请人已同意)") .HasColumnType("tinyint(4)"); entity.HasOne(d => d.Group).WithMany(p => p.GroupInvites) .HasForeignKey(d => d.GroupId) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("group_invite_ibfk_2"); entity.HasOne(d => d.InviteUserNavigation).WithMany(p => p.GroupInviteInviteUserNavigations) .HasForeignKey(d => d.InviteUser) .HasConstraintName("group_invite_ibfk_1"); entity.HasOne(d => d.InvitedUserNavigation).WithMany(p => p.GroupInviteInvitedUserNavigations) .HasForeignKey(d => d.InvitedUser) .HasConstraintName("group_invite_ibfk_3"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("group_member") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.HasIndex(e => e.GroupId, "Groupld"); entity.HasIndex(e => e.Id, "ID"); entity.HasIndex(e => e.UserId, "Userld"); entity.Property(e => e.Id) .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.Created) .HasDefaultValueSql("'1970-01-01 00:00:00'") .HasComment("加入群聊时间") .HasColumnType("datetime"); entity.Property(e => e.GroupId) .HasComment("群聊编号") .HasColumnType("int(11)"); entity.Property(e => e.Role) .HasComment("成员角色(0:普通成员,1:管理员,2:群主)") .HasColumnType("tinyint(4)"); entity.Property(e => e.UserId) .HasComment("用户编号") .HasColumnType("int(11)"); entity.HasOne(d => d.Group).WithMany(p => p.GroupMemberGroups) .HasForeignKey(d => d.GroupId) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("group_member_ibfk_2"); entity.HasOne(d => d.User).WithMany(p => p.GroupMemberUsers) .HasForeignKey(d => d.UserId) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("group_member_ibfk_1"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("group_request") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.HasIndex(e => e.GroupId, "GroupId"); entity.Property(e => e.Id) .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.Created) .HasComment("创建时间") .HasColumnType("datetime"); entity.Property(e => e.Description) .HasComment("入群附言") .HasColumnType("text"); entity.Property(e => e.GroupId) .HasComment("群聊编号\r\n") .HasColumnType("int(11)"); entity.Property(e => e.State) .HasComment("申请状态(0:待管理员同意,1:已拒绝,2:已同意)") .HasColumnType("tinyint(4)"); entity.Property(e => e.UserId) .HasComment("申请人 ") .HasColumnType("int(11)"); entity.HasOne(d => d.Group).WithMany(p => p.GroupRequests) .HasForeignKey(d => d.GroupId) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("group_request_ibfk_1"); entity.HasOne(d => d.GroupNavigation).WithMany(p => p.GroupRequests) .HasForeignKey(d => d.GroupId) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("group_request_ibfk_2"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("login_log") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.HasIndex(e => e.UserId, "Userld"); entity.Property(e => e.Id) .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.Dtype) .HasComment("设备类型(通Devices/DType) ") .HasColumnType("tinyint(4)") .HasColumnName("DType"); entity.Property(e => e.Logined) .HasComment("登录时间 ") .HasColumnType("datetime"); entity.Property(e => e.State) .HasComment("登录状态(0:登陆成功,1:未验证,2:已被拒绝) ") .HasColumnType("tinyint(4)"); entity.Property(e => e.UserId) .HasComment("登录用户 ") .HasColumnType("int(11)"); entity.HasOne(d => d.User).WithMany(p => p.LoginLogs) .HasForeignKey(d => d.UserId) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("login_log_ibfk_1"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("messages") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.HasIndex(e => e.Sender, "Sender"); entity.Property(e => e.Id) .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.ChatType) .HasComment("聊天类型\r\n(0:私聊,1:群聊)") .HasColumnType("tinyint(4)"); entity.Property(e => e.Content) .HasComment("消息内容 ") .HasColumnType("text"); entity.Property(e => e.Created) .HasComment("发送时间 ") .HasColumnType("datetime"); entity.Property(e => e.MsgType) .HasComment("消息类型\r\n(0:文本,1:图片,2:语音,3:视频,4:文件,5:语音聊天,6:视频聊天)") .HasColumnType("tinyint(4)"); entity.Property(e => e.Recipient) .HasComment("接收者(私聊为用户ID,群聊为群聊ID) ") .HasColumnType("int(11)"); entity.Property(e => e.Sender) .HasComment("发送者 ") .HasColumnType("int(11)"); entity.Property(e => e.State) .HasComment("消息状态(0:已发送,1:已撤回) ") .HasColumnType("tinyint(4)"); entity.HasOne(d => d.SenderNavigation).WithMany(p => p.Messages) .HasForeignKey(d => d.Sender) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("messages_ibfk_1"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("notifications") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.HasIndex(e => e.UserId, "Userld"); entity.Property(e => e.Id) .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.Content) .HasComment("通知内容") .HasColumnType("text"); entity.Property(e => e.Created) .HasComment("创建时间") .HasColumnType("datetime"); entity.Property(e => e.Ntype) .HasComment("通知类型(0:文本)") .HasColumnType("tinyint(4)") .HasColumnName("NType"); entity.Property(e => e.Title) .HasMaxLength(40) .HasComment("通知标题"); entity.Property(e => e.UserId) .HasComment("接收人(为空为全体通知)") .HasColumnType("int(11)"); entity.HasOne(d => d.User).WithMany(p => p.Notifications) .HasForeignKey(d => d.UserId) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("notifications_ibfk_1"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("permissions") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.Property(e => e.Id) .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.Code) .HasComment("权限编码 ") .HasColumnType("int(11)"); entity.Property(e => e.Created) .HasComment("创建时间 ") .HasColumnType("datetime"); entity.Property(e => e.Name) .HasMaxLength(50) .HasComment("权限名称 "); entity.Property(e => e.Ptype) .HasComment("权限类型(0:增,1:删,2:改,3:查) ") .HasColumnType("int(11)") .HasColumnName("PType"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("permissionarole") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.HasIndex(e => e.PermissionId, "Permissionld"); entity.HasIndex(e => e.RoleId, "Roleld"); entity.Property(e => e.Id) .ValueGeneratedNever() .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.PermissionId) .HasComment("权限 ") .HasColumnType("int(11)"); entity.Property(e => e.RoleId) .HasComment("角色 ") .HasColumnType("int(11)"); entity.HasOne(d => d.Permission).WithMany(p => p.Permissionaroles) .HasForeignKey(d => d.PermissionId) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("permissionarole_ibfk_2"); entity.HasOne(d => d.Role).WithMany(p => p.Permissionaroles) .HasForeignKey(d => d.RoleId) .OnDelete(DeleteBehavior.ClientSetNull) .HasConstraintName("permissionarole_ibfk_1"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("roles") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.Property(e => e.Id) .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.Created) .HasComment("创建时间 ") .HasColumnType("datetime"); entity.Property(e => e.Description) .HasComment("角色描述 ") .HasColumnType("text"); entity.Property(e => e.Name) .HasMaxLength(20) .HasComment("角色名称 "); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("PRIMARY"); entity .ToTable("users") .HasCharSet("utf8mb4") .UseCollation("utf8mb4_general_ci"); entity.HasIndex(e => e.Id, "ID"); entity.HasIndex(e => e.Username, "Username").IsUnique(); entity.Property(e => e.Id) .HasColumnType("int(11)") .HasColumnName("ID"); entity.Property(e => e.Avatar) .HasMaxLength(255) .HasComment("用户头像链接"); entity.Property(e => e.Created) .HasDefaultValueSql("'1970-01-01 00:00:00'") .HasComment("创建时间") .HasColumnType("datetime"); entity.Property(e => e.IsDeleted) .HasComment("软删除标识\r\n0:账号正常\r\n1:账号已删除") .HasColumnType("tinyint(4)"); entity.Property(e => e.NickName) .HasMaxLength(50) .HasComment("用户昵称"); entity.Property(e => e.OnlineStatus) .HasComment("用户在线状态\r\n0(默认):不在线\r\n1:在线") .HasColumnType("tinyint(4)"); entity.Property(e => e.Password) .HasMaxLength(50) .HasComment("密码"); entity.Property(e => e.Status) .HasDefaultValueSql("'1'") .HasComment("账户状态\r\n(0:未激活,1:正常,2:封禁)") .HasColumnType("tinyint(4)"); entity.Property(e => e.Updated) .HasComment("修改时间") .HasColumnType("datetime"); entity.Property(e => e.Username) .HasMaxLength(50) .HasComment("唯一用户名"); }); OnModelCreatingPartial(modelBuilder); } partial void OnModelCreatingPartial(ModelBuilder modelBuilder); }