【发布时间】:2021-05-15 13:32:00
【问题描述】:
我有以下代码从GroupMemberships DbSet 中删除成员资格,这非常简单:
public int RemoveStudentFromGroup(string studentId, int groupId)
{
try
{
var member = _context.GroupMemberships
.Where(pgm => pgm.UserId == studentId && pgm.StudentGroupId == groupId)
.FirstOrDefault();
_context.GroupMemberships.Remove(member);
_context.SaveChanges();
return 1;
}
catch
{
throw;
}
}
但是,由于某种原因(从 EF Core 2.2 升级到 3.0 后),此代码会引发以下错误:
System.ArgumentNullException:值不能为空。 (参数“实体”)
在 Microsoft.EntityFrameworkCore.Utilities.Check.NotNull[T](T 值, 字符串参数名称)
在 Microsoft.EntityFrameworkCore.Internal.InternalDbSet`1.Remove(TEntity 实体)
在 Synergy.Controllers.StudentGroupController.RemoveStudentFromGroup(字符串 studentId, Int32 groupId) 在 C:\Users\ErkanEr\source\repos\Synergy\Controllers\StudentGroupController.cs:line 810
在 lambda_method623(闭包,对象,对象[])
这里是GroupMembership实体的定义:
public class GroupMembership
{
[Key]
public int Id { get; set; }
[ForeignKey("StudentGroupId")]
public StudentGroup StudentGroup { get; set; }
public int StudentGroupId { get; set; }
[ForeignKey("UserId")]
public ApplicationUser User { get; set; }
public string UserId { get; set; }
}
任何想法为什么会发生这种情况?
【问题讨论】:
-
您是否检查了 member != null 吗?
标签: c# entity-framework entity-framework-core