【发布时间】:2021-08-26 15:09:47
【问题描述】:
客户端希望通过存储过程完成与数据库的所有通信。要在 ASP 中执行此操作,我使用 FromSqlRaw,如下所示:
_context.Visit.FromSqlRaw("exec VisitApi_RecordVisit @User", userParam)
存储过程完成其工作并记录访问。但是每次触发时都会在控制台中抛出错误:
System.InvalidOperationException: The required column 'Id' was not present in the results of a 'FromSql' operation.
在研究这个错误时,我发现这个错误是因为它正在记录的表有一个主键。要解决此问题,我必须删除主键列,然后将其添加回来,并将“身份规范”设置为“否”。我也尝试添加 .HasNoKey();到表并尝试更新数据库。但是,当我这样做时,它告诉我需要删除该列并重新添加它。问题是已经记录了大约 200,000 次访问,我不想丢失已经绑定到每一行的 ID。有什么方法可以在不删除列或删除现有数据的情况下消除此错误?
【问题讨论】:
-
为什么选择 Entity.FromSqlRaw() 来运行任意 Sql proc?
-
使用 context.Database.ExecuteSqlCommand("EXEC AddCategory @CategoryName", name);
标签: c# sql asp.net asp.net-mvc asp.net-core-3.1