C# FromSqlRaw在尝试获取标识符为当前('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

我正在尝试使用FromSqlRaw方法和ident_current'Order'检索订单表中最后一个插入的项目,以从订单中获取最后一个ID。我已经在Product表上用ident_current测试了这个方法,它工作得很好,但由于某种原因,当我在Order表上调用它时,它会改变这样一条消息

下面是我如何调用该方法的

            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”附近的语法不正确。是否有不更改表名的修复程序?