C# FromSqlRaw在尝试获取标识符为当前('Order')的最后一个插入项时返回警报消息
我正在尝试使用FromSqlRaw方法和ident_current'Order'检索订单表中最后一个插入的项目,以从订单中获取最后一个ID。我已经在Product表上用ident_current测试了这个方法,它工作得很好,但由于某种原因,当我在Order表上调用它时,它会改变这样一条消息 下面是我如何调用该方法的C# FromSqlRaw在尝试获取标识符为当前('Order')的最后一个插入项时返回警报消息,c#,sql-server,asp.net-mvc-5,entity-framework-core,C#,Sql Server,Asp.net Mvc 5,Entity Framework Core,我正在尝试使用FromSqlRaw方法和ident_current'Order'检索订单表中最后一个插入的项目,以从订单中获取最后一个ID。我已经在Product表上用ident_current测试了这个方法,它工作得很好,但由于某种原因,当我在Order表上调用它时,它会改变这样一条消息 下面是我如何调用该方法的 var last_ord = _context.Products.FromSqlRaw("Select id from Product where
var last_ord = _context.Products.FromSqlRaw("Select id from Product where id = ident_current('Product')").ToList();
var last_ord1 = _context.Orders.FromSqlRaw("Select id from Order where id = ident_current('Order')").ToList();
同样,第一种方法非常有效
第二次我收到了这个警报
编辑
我提醒说如果行动失败了
$.ajax({
type: "POST",
url: "@Url.Action("Test", "Orders")",
data: ({
dest_in: dest,
date_in: date,
cost_in: cost,
list_in: list
}),
success: function (data) {
},
error: function (data) {
alert(data);
}
});
并且该函数中断,没有错误消息
这是产品的设计图
CREATE TABLE [dbo].[Product] (
[id] INT IDENTITY (1, 1) NOT NULL,
[name] NVARCHAR (MAX) NOT NULL,
[amount] INT NOT NULL,
[cost] REAL NOT NULL,
[OrderId] INT NOT NULL,
CONSTRAINT [PK_Product] PRIMARY KEY CLUSTERED ([id] ASC)
);
为了秩序
CREATE TABLE [dbo].[Order] (
[id] INT IDENTITY (1, 1) NOT NULL,
[id_agent] INT NOT NULL,
[destinator] NVARCHAR (MAX) NOT NULL,
[deliver_date] DATE NOT NULL,
[cost] REAL NOT NULL,
CONSTRAINT [PK_Order] PRIMARY KEY CLUSTERED ([id] ASC)
);
ORDER是一个保留关键字,不要将其用于对象名称,如果必须使用,则必须对其进行分隔。从Order中选择id,其中id=ident_当前“Order”将导致关键字Order附近的错误无效语法。我怀疑您的应用程序正在告诉您,但您正在丢弃所述错误。EF不会显示消息框。ASP.NET MVC也是如此,它是一个专门的web框架。显示该消息框的是您自己的代码。至少在显示消息框的代码中有一个bug单独注意,对于名为cost的列来说,real/float是一个糟糕的选择;这两种数据类型都是不准确的数据类型,并且像在其中存储货币值这样的决策可能并将导致意外的结果。另外,您的产品名称真的可以长达10亿个字符吗?添加适当的异常处理和日志异常,而不是仅在消息框中显示部分异常。在生产过程中,不会有任何人看到屏幕并记录错误消息。NET Core的ILogger具有LogWarning、LogError和LogCritical重载,它们接受异常对象作为第一个参数。Serilog也是。如果编写自己的代码,请确保记录exception.ToString返回的整个异常文本,而不仅仅是message@Larnu现在我发现这个消息在关键字“Order”附近的语法不正确。是否有不更改表名的修复程序?