我正在try 删除SentGroupJoinRequest记录 record of userId and GroupJoinRequestId
这是由User
实体和SentGroupJoinRequests
字段之间的关系和按JoinRequests
字段分组创建的,但当访问和删除每个实体的属性时,它们不会从表中删除.
以下是方法:
public async Task<ServiceResponse<string>> AcceptJoinRequest(int groupId, string memberId)
{
var serviceResponse = new ServiceResponse<string>();
try
{
var group = await _context.Groups.FindAsync(groupId) ?? throw new Exception("Group not found.");
if (group.OwnerId != _http.HttpContext.User.FindFirstValue("Id"))
{
throw new Exception("You are not group owner.");
}
var userRequest = await _context.Users.FindAsync(memberId) ?? throw new Exception("User not found.");
if (group.Followers.Contains(userRequest))
{
throw new Exception("User already in a group.");
}
group.Followers.Add(userRequest);
userRequest.Groups.Add(group);
userRequest.SentGroupJoinRequests.Remove(group);
group.JoinRequests.Remove(userRequest);
await _context.SaveChangesAsync();
serviceResponse.Message = "You have approved the application.";
serviceResponse.Success = true;
}
catch (Exception ex)
{
serviceResponse.Success = false;
serviceResponse.Message = ex.Message;
}
return serviceResponse;
}
User
个实体:
namespace SocialNetwork.Entities
{
public class User
{
public string Id { get; set; } = string.Empty;
public string Surname { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public DateTime Birthday { get; set; }
public string Location { get; set; } = string.Empty;
public List<Group> Groups { get; set; } = [];
public List<Group> SentGroupJoinRequests { get; set; } = [];
}
}
Group
个实体:
namespace SocialNetwork.Entities
{
public class Group
{
public int Id { get; set; }
public string OwnerId { get; set; } = string.Empty;
public string Name { get; set; } = string.Empty;
public string Description { get; set; } = string.Empty;
public List<Post> Posts { get; set; } = [];
public List<User> Followers { get; set; } = [];
public List<User> JoinRequests { get; set; } = [];
public bool IsClosed { get; set; }
}
}
数据库设置:
namespace SocialNetwork.Data
{
public class DataContext : DbContext
{
public DataContext(DbContextOptions<DataContext> options) : base(options)
{
}
public DbSet<User> Users { get; set; }
public DbSet<MetaData> MetaDatas { get; set; }
public DbSet<Post> Posts { get; set; }
public DbSet<Group> Groups { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasMany(u => u.Groups)
.WithMany(f => f.Followers)
.UsingEntity(j => j.ToTable("UserGroups"));
modelBuilder.Entity<User>()
.HasMany(u => u.SentGroupJoinRequests)
.WithMany(j => j.JoinRequests)
.UsingEntity(j => j.ToTable("UserJoinRequests"));
}
}
}
为什么没有在UserJoinRequest表中删除该字段,我如何解决它?
数据库中的记录不会被删除,即使您分别从不同实体中删除了两个属性