创建对象后将对象的 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 插入表中的主要内容,如果未能解决你的问题,请参考以下文章