【问题标题】:Inserting an object's id into a table after creating the object创建对象后将对象的 id 插入表中
【发布时间】: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 类型

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

【问题讨论】:

    标签: jquery database asp.net-mvc-5


    【解决方案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')

    返回

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多