我正在为使用Entity Framework访问SQL Server数据库的应用程序创建一个管理门户。我无法弄清楚为什么会发生此异常,因为触发该异常的方法与异常中显示的对象无关。问题出在我的AuthorizeStaff方法中。它执行得很好,但是当我尝试将更改保存到数据库时会触发异常。这是我的代码:
public async Task<IActionResult> AuthorizeStaff(int staffId, int schoolId)
{
var school = _context.Schools.SingleOrDefault(x => x.Id == schoolId);
var requested = JsonConvert.DeserializeObject<List<Staff>>(school.RequestedStaff);
var staff = requested.Single(x => x.Id == staffId);
List<Staff> staffList = school.StaffList;
staffList.Add(staff);
school.Staff = JsonConvert.SerializeObject(staffList);
requested.Remove(staff);
school.RequestedStaff = JsonConvert.SerializeObject(requested);
await _context.SaveChangesAsync();
return Content("The staff member was authorized succesfully");
}
这是我的DbContext
课:
public class HallPassContext : DbContext
{
public HallPassContext(DbContextOptions<HallPassContext> options) : base(options) { }
public DbSet<School> Schools { get; set; }
public override int SaveChanges()
{
return base.SaveChanges();
}
}
我完全不知所措,因为我对Entity Framework经验不足,并且上面的代码都没有涉及对象“ Pass”。
这是错误:
System.Data.SqlClient.SqlException(0x80131904):无效的对象名称“ Pass”。
在System.Data.SqlClient.SqlCommand。<> c.b__122_0(任务
1 result)
2.InnerInvoke()
at System.Threading.Tasks.ContinuationResultTaskFromResultTask
在System.Threading.ExecutionContext.RunInternal(ExecutionContext执行上下文,ContextCallback回调,对象状态)处
从先前引发异常的位置开始的堆栈跟踪在System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task&currentTaskSlot)
从上一个引发异常的位置开始的堆栈跟踪结束- 在Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteAsync(IRelationalConnection连接,DbCommandMethod executeMethod,IReadOnlyDictionary`2参数值,CancellationToken cancelledToken) 在Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection连接,CancellationToken cancelledToken) ClientConnectionId:61782dfe-2603-4360-bb7e-50b2c475910b 错误号:208,状态:1,类别:16
任何帮助都会很棒,谢谢!