Files
webappserver1/ApplicationDbContext/ApplicationDbContext.cs
2026-05-19 21:55:48 +08:00

65 lines
2.3 KiB
C#

using Microsoft.EntityFrameworkCore;
using WebAppServer1.Models;
namespace WebAppServer1.ApplicationDbContext
{
public class AppDbContext :DbContext
{
public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// 好友关系双向约束
modelBuilder.Entity<Friend>()
.HasOne(f => f.User)
.WithMany(u => u.Friends)
.HasForeignKey(f => f.UserId)
.OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity<Friend>()
.HasOne(f => f.FriendUser)
.WithMany()
.HasForeignKey(f => f.FriendId)
.OnDelete(DeleteBehavior.Restrict);
// 群成员约束
modelBuilder.Entity<GroupMember>()
.HasOne(gm => gm.Group)
.WithMany(g => g.Members)
.HasForeignKey(gm => gm.GroupId);
modelBuilder.Entity<GroupMember>()
.HasOne(gm => gm.User)
.WithMany()
.HasForeignKey(gm => gm.UserId);
// 消息约束
modelBuilder.Entity<Message>()
.HasOne(m => m.Sender)
.WithMany(u => u.Messages)
.HasForeignKey(m => m.SenderId)
.OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity<Message>()
.HasOne(m => m.Receiver)
.WithMany()
.HasForeignKey(m => m.ReceiverId)
.OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity<Message>()
.HasOne(m => m.Group)
.WithMany()
.HasForeignKey(m => m.GroupId);
}
public DbSet<User> Users { get; set; }
public DbSet<Friend> Friends { get; set; }
public DbSet<Group> Groups { get; set; }
public DbSet<GroupMember> GroupMembers { get; set; }
public DbSet<Message> Messages { get; set; }
public DbSet<Notification> Notifications { get; set; }
public DbSet<FileEntity> Files { get; set; }
public DbSet<Tokens> Tokens { get; set; }
public DbSet<UserProfileHistory> userProfileHistories { get; set; }
public DbSet<LoginRecord> LoginRecords { get; set; }
}
}