65 lines
2.3 KiB
C#
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; }
|
|
}
|
|
}
|