Context.SaveChanges() 抛出 SqlException:对象名称无效

问题描述 投票:0回答:1

我正在为我的应用程序创建一个管理门户,该门户使用实体框架来访问 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();
    }
}

我完全被难住了,因为我对实体框架没有令人难以置信的经验,而且我上面的代码都没有涉及对象“Pass”。

这是错误:

System.Data.SqlClient.SqlException(0x80131904):无效的对象名称“Pass”。

在 System.Data.SqlClient.SqlCommand.<>c.b__122_0(任务

1 result)
at System.Threading.Tasks.ContinuationResultTaskFromResultTask
2.InnerInvoke()
在 System.Threading.ExecutionContext.RunInternal(ExecutionContextexecutionContext,ContextCallback 回调,对象状态)
从先前引发异常的位置开始堆栈跟踪结束

在 System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)

从先前引发异常的位置开始的堆栈跟踪结束 --- 在 Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteAsync(IRelationalConnection 连接、DbCommandMethodexecuteMethod、IReadOnlyDictionary`2parameterValues、CancellationTokencancelToken) 在Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection连接,CancellationToken取消令牌) ClientConnectionId:61782dfe-2603-4360-bb7e-50b2c475910b 错误号:208,状态:1,类别:16

任何帮助都会很棒,谢谢!

.net sql-server asp.net-mvc entity-framework
1个回答
0
投票

Проблема в этой строке 公立 DbSet 学校 { get;放; }。 School - это имя объекта модели в C#, а Schools должно быть = имени таблицы. У Вас видимо не так.

© www.soinside.com 2019 - 2024. All rights reserved.