创建对象后将对象的 id 插入表中

Posted

技术标签:

【中文标题】创建对象后将对象的 id 插入表中【英文标题】:Inserting an object's id into a table after creating the object 【发布时间】:2021-08-08 19:30:35 【问题描述】:

我正在尝试创建一个包含产品列表的订单。为此,我显示了所有可用的产品,并使用复选框输入和一些 jQuery 和 ajax 我设法将所有数据发送到我的 Orders 控制器中的 Test 操作

测试动作

[HttpPost]
        public void Test(string dest_in, string date_in, string cost_in, List<int> list_in)
        

            int count = list_in.Count;
            var ord_dest = dest_in;
            var ord_dest1 = date_in;
            var ord_dest2 = cost_in;
            var lis2 = list_in;
        

还有 jQuery 脚本

<script type="text/javascript">
    function AddProduct() 
        var list = new Array();
        var dest = document.getElementById("model_dest").value;
        var date = document.getElementById("model_date").value;
        var cost = document.getElementById("model_cost").value;
        alert(dest);
        alert(date);
        alert(cost);
        $.each($("#products input[type=checkbox]:checked"),
            function (index, data) 
                var idk1 = $(this).val();
                var idk2 = $(this).attr('value');
                list.push(idk1);
                alert(idk1 + ' ' + idk2);
            );
        alert(list.length);

         $.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);
            
        );
    
</script>

测试功能不完整。我用它只是为了测试我的 jQuery 代码,在里面我想创建新的 Order 但是..

我现在面临的问题是,由于 Order Product 是多对多关系,我需要使用 OrdProd 表来存储哪些产品按什么顺序排列。但是我怎样才能让我新创建的订单的 id 将其插入 OrdProd。

PS Order 中的 id 列是 Identity 类型

编辑 按顺序排列的所有其他列都可以复制,因此我无法对所有其他属性执行选择

【问题讨论】:

【参考方案1】:

一般来说,你想这样做:

开始一个 SQL 事务。 插入产品,获取其 ID。 使用该 ID 更新另一个表。 COMMIT 交易。

只有当您COMMIT 时,其他用户才会看到数据库实际上发生了变化,并且他们会立即看到一切都发生了变化。

【讨论】:

但是如何获取它的ID呢?【参考方案2】:

命令是:

_context.Products.FromSqlRaw("Select * from Product where id = ident_current('Product')").ToList();

地点:

_context 是 AppDbContext

Products 是女巫中的表格,我要搜索最后插入的项目

FrowmSqlRaw 是一个从 Microsoft.EntityFrameworkCore 执行原始查询的函数

AND 最后插入 Product 表中的最后一项的 id 由 ident_current('Product')

返回

【讨论】:

以上是关于创建对象后将对象的 id 插入表中的主要内容,如果未能解决你的问题,请参考以下文章

如何在django创建模板中创建对象时自动插入当前用户?

保存大量对象需要花费大量时间

ProgrammingError:对象是在线程 id 14408 中创建的,这是线程 id 2776。我无法创建帐户

js中创建对象的4种方法

sqlserver中创建一个表对象应该包括哪两个步骤?

JAVA中创建了多个对象,为什么只重复出现一个对象